js中var和let的快速区别
先看下面的几个例子:
1.
var a = 99; // 全局变量a f(); // f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 console.log(a); // a=>99, 此时是全局变量的a function f() { console.log(a); // 当前的a变量是下面变量a声明提升后,默认值undefined var a = 10; console.log(a); // a => 10 } // 输出结果: undefined 10 99
2.
{ var i = 9; } console.log(i); // 9
3.
{ let i = 9; // i变量只在 花括号内有效 } console.log(i); // Uncaught ReferenceError: i is not defined
总结:在ES6中开始用let来定义块级作用域变量,let没有变量的提升,用let声明的变量要求必须等let声明语句执行之后,该变量才能使用不然会报Uncaught ReferenceError 错误,而且let变量不能进行重复声明。