1、为什么要搞个let、const出来

ES6 规定暂时性死区let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。

 

2、var、let、const区别

var 声明变量 甚至可以声明全局变量 window.某某 都可以调用

let 声明块级变量 不可能声明到全局中去

const 声明并初始化赋值变量 声明之后雷打不动的初始值 不允许再重新赋值

ES6 的编辑 Allen Wirfs-Brock 曾说过,如果能重来一次,他希望把 let 设计成像现在的 const 一样,而新增一个比如 let var 代替现在的 let。但因为 const 这个保留字在 JS 刚发明的时候就从 Java 抄过来了,let/const 这对儿关键字在制定 ES5 的时候就计划在 ES6 里用了,所以 ES6 里也就没再改了。

 

3、扩展运算符 三个点 ...

其实就是一个深拷贝,新建一个内存地址,不影响原来的对象值,例子如下:

ES6常用语法总结 | 持续更新_字符串

更多牛逼的用法可参考:

es6 扩展运算符 三个点(...)

ES6 展开运算符 Spread operator

 

4、export 与 import 实现模块化用法

ES6常用语法总结 | 持续更新_ECMAScript 6_02

以此问题为例,阮一峰的es6教程解答如下:

ES6常用语法总结 | 持续更新_运算符_03

export var a = 1

对应导入写法:

import { a } from xxx

------------------------------------------------

var a = 1

export default a 

对应导入写法:

import a from xxx

------------------------------------------------

深入学习传送门:阮一峰ES6入门之Module语法

 

5、`` 模板字符串

var total = 50;

console.log("总数为:" + total);

// 等于

console.log(`总数为${total}`);

简介:

`` 反引号,tab上面的那个键(~`),功能如下:

1、可以识别换行;

2、可以通过 ${ } 直接引入变量。

备注:

建议像 console.log("总数为:" + total) 这种简单拼接的就别用模板字符串(装B)了,毕竟这玩意儿是个语法糖,相对于原生的字符串拼接效率会慢些,当然这点性能损耗用户也很难感知,但是我们还是推崇最优方案吧 ~

this.$confirm(`确认删除${row.menuName}?`) 

这种就比较适合用了,不论性能,但从代码的优雅层面上就比

this.$confirm("确认删除" + row.menuName+ "?")  

这种会更好看些,嘻嘻 ~ ~