es6学习--块级作用域let const

先安装node ,新建1.js文件,通过node的 cmd进入本地文件1.js    运行 node 1.js   可以测试以下代码。

1.基本用法

     let 声明变量,只在块级作用域有效。

    

{
    let  a =1 ;
    var b = 2 ;
}

console.log(a);  //  a is not defined
console.log(b);   //2

 

 在for 循环中使用,循环和循环内部分别是单独的作用域

for(let i=0;i<3;i++){
    
    console.log(i); // 0 1 2
}

for(let i=0;i<3;i++){

let i='abc';
console.log(i); // abc abc abc
}

 

2.不存在变量提升

console.log(a); //undefined
var a = 1;

console.log(b);  //b is not defined
let b = 2;

 

3.不允许重复声明

4.允许块级作用域之间相互嵌套,外层作用域无法读取内层作用域变量

 

总结:在一个块级区域内,如果存在let const 声明的变量你,如果在声明之前使用就会报错,称为“暂时性死区” 因为已经绑定在这个块级区域内了,跟外部声明的同名变量没有关系。

  因此:变量一定要在声明之后使用

  

const 声明的是常量 ,不可改变 ,只能声明的块级作用域内有效,不存在提升,存在“暂时性死区”,不可重复声明。

 

var命令和function命令声明的全局变量,依旧是顶层对象的属性;ES6规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。

 

posted @ 2017-08-29 13:39  风起了--  阅读(172)  评论(0)    收藏  举报