1, 在以往的 js 中只存在函数作用域而不存在块级作用域. 只在是 var 声明的在整个 fn 中都有效.--- 导致结果如下
- fn(){for(var i =0;i<xx.length;i++){ // 当声明 i 后该参数在整个 fn 中都有效污染了全局变量 再该方法后就不可再说用 i
- }
- for(let i =0;j<xx.length;j++){ // 但如果使用 let 声明则表示该变量处于块级作用域 {} 想想 java 不污染全局变量 也更加规范
- }
- }
2, 使用 let 将会存在暂时性死区 解释: 使用 let 声明的变量, 在其声明前不可使用. 规范 js
- fn(){
- console.log(a); // 直接报错 这叫暂时性死区
- let a =5;
- }
- fn(){
- console.log(a); //undefind 不会报错 只是表示该参数未声明而已
- var a =5;
- }
在 ESC6 中 新增 coenst 声明 -------- 向高级编辑语言看齐. final static
const 声明的变量必须声明同时初始化, 且不可改变值, 但可以改变属性.
- // 例如:
- for(){
- const t = [ ]
- t=[1,2];// 报错
- t[0]=1;// 可以改变其属性
- }
来源: http://www.bubuko.com/infodetail-2557442.html