块作用域(即大括号内的作用域)
- es5中作用域:全局作用域、函数作用域
- es6新增了块作用域
- 离开了大括号,可以理解为块作用域的生命周期结束
- es6强制开启严格模式(“use strict”)
- 严格模式下,变量未声明则不能引用,否则报错
function test(){
for(var i=1; i<3; i++ ){
console.log(i)//循环输出1,2
}
console.log(i)//3
}
test()
//1
//2
//3
function test(){
for(let i=1; i<3; i++ ){
console.log(i)//循环输出1,2
}
console.log(i)//报错 i is not defined
}
test()
//1
//2
//报错 i is not defined
let
- 不能重复定义变量
let a = 1;
let a = 2;
//不能重复定义变量
const
- const声明时,必须赋值
- const声明的常量无法修改
- const声明的引用类型时,可以修改属性
- const 声明的引用类型时,不变的是指针,但可以改变引用类型的属性
const a = '123'
a = '555' //报错,常量不能变
const tt;
const obj = {x: 213}
obj.x = 456
console.log(obj)//{x:456}