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、扩展运算符 三个点 ...
其实就是一个深拷贝,新建一个内存地址,不影响原来的对象值,例子如下:
更多牛逼的用法可参考:
4、export 与 import 实现模块化用法
以此问题为例,阮一峰的es6教程解答如下:
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+ "?")
这种会更好看些,嘻嘻 ~ ~