-
let和const不存在变量提升机制
创建变量的六种方式中:var/function有变量提升,而let/const/class/import都不存在这个机制
-
在相同作用域中(或执行上下文中)var允许重复声明,而let是不允许的
var/function在相同作用域中,可以重复声明,但声明第一次后,再遇到则不再声明
使用let/const声明,浏览器会校验当前作用域中是否已经存在这个变量在浏览器开辟栈内存供代码自上而下执行之前,不仅有变量提升的操作,还有很多其他的操作: ”词法解析“或者”词法检测“,检测当前即将要执行的代码是否会出现“语法错误 SyntaxError”,如果出现错误,代码将不会再执行。(第一行都不执行)
console.log(1); let a = 12; console.log(a); let a = 13; console.log(a);
-
let能解决typeof检测时出现的暂时性死区问题
console.log(typeof a); // "undefined",本应报错因为没有a (暂时性死区) // ------------------------ console.log(typeof a); // Cannot access 'a' before initialization let a;
-
在全局作用域下,带var/function声明的全局变量相当于给window设置了对应的属性,不带var等声明的只是给window设置了对应的属性,如果是使用了let/const声明的,只是全局变量,没有给window设置属性
let a = 10; console.log(window.a); // undefined var b = 20; console.log(window.b); // 20
-
let产生块级作用域
let foo = 1; function bar() { if (!foo) { // 块作用域 foo是块中私有的 let foo = 10; } console.log(foo); // 1 } bar();
let/const 和 var 的区别
最新推荐文章于 2024-10-31 22:54:55 发布