不会写东西,有错误请大家帮忙纠正,谢谢!
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错误,代码将不在执行(第一行代码都不会执行)