let、const命令

2019-08-03  本文已影响0人  小橘籽

这两个命令声明的都是块作用域变量和常量

let 变量

function test(){    
    for(var i=0;i<3;i++){
        console.log('innner:' + i)
    }
    console.log('last:' + i) // 3
}

es5没有块作用域,所以此处i的作用域为test的函数作用域。

function test(){    
    for(let i=0;i<3;i++){
        console.log('innner:' + i)
    }
    console.log('last:' + i) // Uncaught ReferenceError: i is not defined
}

es6新增了块作用域,所以此处i的作用域为for循环后面的大括号内。

function test(){ // Duplicate declaration "a"
   let a = 2;
   let a = 1; 
}

let a = 3;

同一作用域内,let不能重复定义同名变量。

const 常量

function test(){    
    const PI; // Unexpected token
    PI = 3.14;
    console.log(PI)
}

常量声明时必须赋值

function test(){    
    const PI= 3.14;
    PI = 8; // SyntaxError: "PI" is read-only
    console.log(PI);
}

常量不能被重新赋值

function test(){   
    let a = 1; 
    const PI= a;
    a = 4;
    console.log(PI); // 1
}

function test(){   
    let a = {
        b:1
    }; 
    const PI= a;
    a.b = 4;
    console.log(PI) // {b: 4}
}

const被赋值为值类型和引用类型的区别

上一篇 下一篇

猜你喜欢

热点阅读