当前位置: 首页 > Web前端 > JavaScript

ES6新特性补充

时间:2023-03-27 10:47:05 JavaScript

1.var、let和const之间有什么区别?答:1、var有变量提升,let和const没有变量提升。2.let不允许重复声明。3、因为let有块级作用域,所以会有临时锁区。如下代码:vartmp=123;if(true){tmp="abc"//ReferenceErrorlettmp;}//上面代码中有一个全局变量tmp,但是let在块中声明了一个局部变量tmp-levelscope,后者导致block-levelscope绑定,所以如果在let中声明一个变量,给tmp赋值,var的相关代码会报错:vara=20;varobj={a:10,fun1:function(){if(a){a=100;}else{a=200;}console.log(this.a)console.log(a);变量a=1;console.log(a)},fun2:function(){console.log(a)}};obj.fun1();//102001obj.fun2()//204.const声明了一个只读变量。一旦声明,变量的值就不能改变。其实质是声明的变量指向的内存地址不能改变。对于简单数据(数字、字符串、布尔值),它的值直接写入变量指向的内存地址,相当于一个常量。对于对象或数组来说,变量指向的地址只是一个指针,地址所引用的对象或数组的内容是可以改变的。但是你不能重新赋值另一个对象或者数组,因为这是相对于赋一个新的引用地址和改变变量来说的,所以会报错。