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


爱吃鸡蛋饼
55 声望8 粉丝