标签:
最近在跟着阮一峰的es6系列文章学习es6,在let和const命令这一章中,发现了一些错误,特列出
function do_something() {
console.log(foo); // ReferenceError
let foo = 2;}
console.log(x);var x=5;
而同样的下面的这段代码也会输出undefined
console.log(x);let x=5;
可见let确实会出现变量提升的情况,然后我们再来看一段从阮一峰es6系列文章复制过来的一段示例代码 详见http://es6.ruanyifeng.com/#docs/let
if (true) {
// TDZ开始
tmp = ‘abc‘; // ReferenceError
console.log(tmp); // ReferenceError
let tmp; // TDZ结束
console.log(tmp); // undefined
tmp = 123;
console.log(tmp); // 123
}
将该代码通过babel编译为es5后的代码如下:
‘use strict‘;
if (true) {
// TDZ开始
_tmp = ‘abc‘; //
console.log(_tmp); // abc
var _tmp = undefined; // TDZ结束
console.log(_tmp); // undefined
_tmp = 123;
console.log(_tmp); // 123
}
var tmp=‘dev‘;
if (true) {
console.log(tmp);
let tmp;
console.log(tmp);
tmp = 123;
console.log(tmp);
}
‘use strict‘;
var tmp = ‘dev‘;
if (true) {
console.log(_tmp);
var _tmp = undefined;
console.log(_tmp);
_tmp = 123;
console.log(_tmp);
}
标签:
原文地址:http://www.cnblogs.com/3sss/p/4781533.html