你的位置:首页 > 软件开发 > Java > ECMAScript6 特性(部分)

ECMAScript6 特性(部分)

发布时间:2017-07-23 00:00:09
新特性概览 参考文章:http://www.cnblogs.com/Wayou/p/es6_new_features.html 这位前辈写的很好,建议深入学习 ———————————————————————————————————————————— let命令 let命令用来声明 ...

ECMAScript6  特性(部分)

新特性概览

参考文章: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

ip
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。