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赋值会报错
var的相关代码题:
var a = 20;
var obj = {
a: 10,
fun1:function(){
if(a){a=100;}
else{a=200;}
console.log(this.a)
console.log(a);
var a = 1;
console.log(a)
},
fun2:function(){
console.log(a)
}
};
obj.fun1();//10 200 1
obj.fun2()//20
4.const声明一个只读的变量,一旦声明,变量的值就不能改变。其本质是声明得变量指向的那个内存地址不能改动。对于简单的数据(数值,字符串,布尔值),其值就直接写在变量指向的内存地址中,等同于常量。而对于对象或者数组,变量指向的地址只是指针,其地址引用的对象或者数组的内容是可以改变的。但是不能重新赋值另外一个对象或者数组,因为这相对于赋值一个新的引用地址,相对于改变了变量,所以会报错。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。