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开始,全局变量将逐步与顶层对象的属性脱钩。