-
-
let声明的变量只在它所在的代码块有效 - 如果使用
let,声明的变量仅在块级作用域内有效 - 上面代码中,变量
i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6- var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10
-
let不像var那样会发生“变量提升”现象- 我把这章的代码都放到了最新的babel 6.7.7 try it out 里面去转码,并且打开了全部特性,结果发现文中所讲的变量提升和暂时性死区与babel的行为并不相符, 我们需要明确的是现在最终运行的代码还是es5, 没必要死扣规范,建议看的过程中都把文中的es6代码用babel的官方工具去试试,看看最终是怎么转换成es5的,一来可以看看es6到底对es5增强了什么,二来可以避免一些预想不到的错误
- 只要块级作用域内存在
let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响- 这个问题和变量提升是一样的 我们在ES6/Babel是看不到预想的结果的
- 在代码块内,使用let命令声明变量之前,该变量都是不可用的
-
2016年10月21日星期五
Google Blog 10/22/2016 (a.m.)
订阅:
博文评论 (Atom)
没有评论:
发表评论