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