es6基礎系列一:let和const

let 聲明變量,能夠說是具備做用域的var,用於聲明變量,主要規則以下:
1 let聲明的變量擁有塊級做用域code

{
    let i = 1;
    console.log(i); // 1
}
console.log(i); // Uncaught ReferenceError: i is not defined

2 同一做用域,let變量應先聲明再調用,同時不能重複聲明作用域

{
    console.log(t1); // undefined
    var t1 = "var聲明的變量";
    console.log(t2); // Uncaught ReferenceError: t2 is not defined
    let t2 = "let聲明的變量"
}
{
    let t3 = "第一次聲明";
    console.log(t3); // 直接報錯 Uncaught SyntaxError: Identifier 't3' has already been declared
    let t3 = "第二次聲明"
}

3 for循環中,let聲明的變量在循環內部的獨立做用域會造成對應的副本it

var a = [];
for (var i = 0; i < 10; i++) {
    a[i] = function() {
        console.log("i的值="+i);
    };
}
console.log(i) // 10
a[6](); // i的值=10 不管a[n];i都已是10了

var a = [];
for (let i = 0; i < 10; i++) {
    a[i] = function() {
        console.log("i的值="+i);
    };
}
// console.log(i) // 未定義 報錯 Uncaught ReferenceError: i is not defined
a[6](); // i的值=6

const 聲明靜態變量,聲明之後不能再修改,其餘用法和let同樣io

const PI; //報錯 Uncaught SyntaxError: Missing initializer in const declaration
const PI = 3.14; // 正確用法
PI = 3.1415; //報錯,重複定義 Uncaught TypeError: Assignment to constant variable
相關文章
相關標籤/搜索