谈一谈let与var和const的区别?
- let为ES6新添加申明变量的命令,它类似于var,但是有以下不同:
- let命令不存在变量提升,如果在let前使用,会导致报错
- 暂时性死区的本质,其实还是块级作用域必须“先声明后使用”的性质。
- let,const和class声明的全局变量不是全局对象的属性。
const声明的变量与let声明的变量类似,它们的不同之处在于,const声明的变量只可以在声明时赋值,不可随意修改,否则会导致SyntaxError(语法错误)。
const只是保证变量名指向的地址不变,并不保证该地址的数据不变。const可以在多个模块间共享 let 暂时性死区的原因:var 会变量提升,let 不会。