乐趣区

关于javascript: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 申明一个只读的变量,一旦申明,变量的值就不能扭转。其本质是申明得变量指向的那个内存地址不能改变。对于简略的数据(数值,字符串,布尔值),其值就间接写在变量指向的内存地址中,等同于常量。而对于对象或者数组,变量指向的地址只是指针,其地址援用的对象或者数组的内容是能够扭转的。然而不能从新赋值另外一个对象或者数组,因为这绝对于赋值一个新的援用地址,绝对于扭转了变量,所以会报错。

退出移动版