ES6新特性拾遗

1.var,let,const的区别?
答:
1.var存在变量提升,let和const不存在变量提升。
2.let不允许重复声明。
3.let因为存在块级作用域,所以会存在暂时性锁区。如下代码:

var tmp = 123;
if(true){
  tmp = "abc"//ReferenceError
  let tmp;
}
//上面的代码中存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量钱,对tmp赋值会报错

4.const声明一个只读的变量,一旦声明,变量的值就不能改变。其本质是声明得变量指向的那个内存地址不能改动。对于简单的数据(数值,字符串,布尔值),其值就直接写在变量指向的内存地址中,等同于常量。而对于对象或者数组,变量指向的地址只是指针,其地址引用的对象或者数组的内容是可以改变的。但是不能重新赋值另外一个对象或者数组,因为这相对于赋值一个新的引用地址,相对于改变了变量,所以会报错。

你可能感兴趣的:(javascript)