前言:在使用javaScript语言写一些算法语言时,老是存在一些闭包,变量声明提前这些问题,导致各种各样奇葩的问题,在这里就做一些let与var分享…
- 首先在javaScript中是不存在
let
变量声明的,这是ES6声明提出的。。 - 其次
let
与var
的区别很大的一点在于let
是不存在变量声明提前。
console.log(a);
let a=1;//这个语句是会报错的,因为不存在变量声明提前。。。
console.log(b);
var b=2;//控制台会输出undefined
let
与var
还有很大的区别在于,let
声明的变量作用于块级,而var
却可以作用于整个函数。。。
if (true) {
var i = 1;
}
console.log(i); // 1
if (true) {
let j = 1;
}
console.log(j); // Uncaught ReferenceError: j is not defined
- 还有一点值得注意的是,let是无法声明全局变量的。。。
var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined