ES6-作用域

2020-03-13  本文已影响0人  zhenghongmo

块级作用域

var a = 1;
{
    var a = 2
}
console.log(a)//2
let a = 1;
{
    let a = 2;
}
console.log(a)//1
const a = 1;
{
    const a = 2;
}
console.log(a)//1

注意:作用域里的常量声明 const a = 2 并不会抛出SyntaxError: Identifier 'a' has already been declared这样的语法错误,因为这是一个新的作用域。

let

if(x){
    let foo;
    let foo; // TypeError thrown.
}
function fn(){
    console.log(a);  //undefined
    console.log(b); //ReferenceError: b is not defined
    var a = 1;
    let b = 2;
}

const

const a = 7;

//(1)
a = 20; //再次赋值会报错

//(2)
const a = 20; // 尝试再次声明会报错
var a =20;
let a =20;//不管用什么声明都会报错

//(3)
if(a===7){
    let a =20 //这个a只在{}这个块级作用域中
    console.log(a) //20
}

const obj = {name: 'momo'}
obj = {NAME:'MOMO'} //报错,不可以再次赋值
obj.name = 'tom' //成功!!

<font color ="red">const定义变量之后,我们不可以修改stack上的内容,但是可以修改heap上的内容</font>

上一篇下一篇

猜你喜欢

热点阅读