标签:
最近在跟着阮一峰的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