ES6-块作用域构造let和const

块级声明用于声明在指定块的作用域之外无法访问的变量。块级作用域存在于:函数内部和块中(字符“{”和“}”之间的区域)
1.let声明
在函数作用域或者全局作用域中通过关键字var声明的变量,无论在哪里都可以使用,这就是JavaScript的变量提升机制。ES6引入了let声明,用法和var一样,不过用Let声明的变量不会被提升,能将变量的作用域限制在当前函数代码块中。

for(var i = 0; i < 5; i++){
    
}
console.log(`i:${i}`) // 可以访问变量i,输出i=10

for(let i = 0; i < 5; i++){
    
}
console.log(`i:${i}`) // 不能访问变量i,报错:i is not defined

使用let声明变量,能防止变量的重复声明。

var testText = 10 // 可以
let testText = 100 // 报错:Identifier 'testText' has already been declared

同作用域中不能使用let声明已存在的,但在不同作用域中,可以声明。如下:

var testText = 10
{
    let testText = 100 // 可以
}

2.const声明
ES6提供了const关键字,用于声明常量。不过通过const关键字声明的产量必须在声明时进行初始化。如下:

const constText = 10  /// 正确

const constText1  // 错误
constText1 = 2000

与let声明类似,在同一作用域下用const声明已经存在的标识符会报错。

let constText = 10
const constText = 100 // 报错

如果使用const声明对象,对象本身的绑定不能修改,但对象的属性和值可以修改。

const constText = {
    value: 10
}
constText.value = 20 // 可以
constText = {
    value: 20 // 报错:Assignment to constant variable
}

你可能感兴趣的:(ES6-块作用域构造let和const)