新特性概览 参考文章:http://www.cnblogs.com/Wayou/p/es6_new_features.html 这位前辈写的很好,建议深入学习 ———————————————————————————————————————————— let命令 let命令用来声明 ...
新特性概览
参考文章:http://www.cnblogs.com/Wayou/p/es6_new_features.html
这位前辈写的很好,建议深入学习
————————————————————————————————————————————
let命令
- let命令用来声明变量,用法类似于var,但仅仅可以使用在定义的代码块中
- 不存在变量提升
- 暂时性死区:只要块级作用域内存在let命令,它所声明的变量就"绑定"binding这个区域,不再受外部影响
- 不允许重复声明:let不允许在相同作用域内重复声明同一个变量
test.js
1 // 在该代码块中声明let,外部不能调用,花括号之内 2 { 3 let a = 100; 4 var b = 200; 5 } 6 7 // console.log(a); 8 // 在这里var进行了变量提升,可以在全局中使用,let不可以变量提升 9 console.log(b);10 // ********************************************************************11 // 不存在变量提升12 // ES513 var arr = [],14 arrTest = [];15 // 在循环中c并没有赋给数组,而是被i循环覆盖为9,所以输出的都是916 for (var i = 0; i < 10; i++) {17 var c = i;18 arr[i] = function() {19 return c;20 }21 }22 // 遍历执行23 for (var i = 0; i < 10; i++) {24 arrTest[i] = arr[i]();25 }26 console.log(arrTest);27 28 // ES629 var arr2 = [];30 // var c → let d31 for (var i = 0; i < 10; i++) {32 let d = i;33 arr2[i] = function() {34 return d;35 }36 }37 for (var i = 0; i < 10; i++) {38 arrTest[i] = arr2[i]();39 }40 console.log(arrTest);41 // 教学视频中没有说清楚,那么是否是因为let d 只对对应的代码块起作用,出现了10个不同的d呢?42 // ********************************************************************43 // 暂时性死区44 {45 console.log(e);46 let e = 100;47 console.log(e);48 }49 // 在视频中得到的结果是undefined和100,而在我的测试中第一个console.log得到的是报错信息,提示未定义50 // 在该代码块中let管辖着e,当未声明变量e时,打印e则会提示未定义的,暂时不可以使用的51 // ********************************************************************52 // 不允许重复声明53 {54 var f = 1;55 let f = 100;56 }57 {58 let g = 100;59 var g = 1;60 }61 // 重复声明会产生报错信息Identifier 'f' has already been declared
原标题:ECMAScript6 特性(部分)
关键词:ip
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。