ECMAScript6 (二)let 的说明

233 阅读1分钟

###一、let 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 例如: 用 let 声明一个变量

{
      let a = 100 ;
      var b = 200 ;
}
    console.log(a); //    Error
    console.log(b) ;

在控制台输出,a 会 会提示错误,因为let a 只定义在 {}中,在“{}里面才有效果。 ###二、let 不存在变量的提升 首先,先搞明白js的变量提升,其实在上面的例子里面,已经有所体现,log(a),这时候的 a 是属于全局变量,先当与从局部变量提升到了全局变量。 另外一个例子:

	//ES5
	console.log("ES5:");
	var a = [];
	for (var i = 0; i < 10; i++) {
		var c = i;
		a[i] = function () {
			console.log(c);
		};
	};
	a[5]();	//9

为什么是9呢?因为到了 i = 9 的时候才跳出循环。 测试, 修改a[5]();中 5 的值,看看输出是多少,实践证明,输出还是 9 。 现在看看 let 情况:

	//ES6
	console.log("ES6:");
	var b = [];
	for (var j = 0; j < 10; j++) {
		let d = j;    //关键点
		console.log("---"+d);
		b[j] = function () {
			console.log(d);
		};
	};
	b[5]();	//5

代码关键 let d = j; 现在修改调用 b[5](); 中的 5的值。看是不是你修改的值。