2、var/let/const区别

167 阅读1分钟

不会写东西,有错误请大家帮忙纠正,谢谢!

1、带var和不带var的区别(全局作用域)

//=>在全局作用域下
    // 不带var:
        a=12;
        不带var,相当于给window设置了一个属性a
        window.a=12;
        console.log(a); //=>window.a
        
   //** 只有全局作用域有这个特点 **
   // 带var:在全局作用域下声明变量b,相当于给window设置了一个属性b(全局变量)
       var b=14; //创建变量b & 给window设置属性b
       console.log(b); //14
       console.log(window.b); //14

2、var/let/const的区别

2.1 let/const不存在变量提升机制;
    在创建变量的6个方法中,var/function有变量提升,let/const/import/class都不存在这个机制
2.2 **在相同作用域下(或执行上下文当中)**,var可以重复声明,let/const不可以(只要有let声明,就不可以重复)

在浏览器进行代码从上而下执行之前,不仅有变量提升(在变量提升之前),会进行“词法检测”或者“词法解析”,如果检测有语法SyntaxErroe错误,代码将不在执行(第一行代码都不会执行)

2021-08-23_130200.png