1)let宣告的變數沒有提公升(let宣告的變數也沒提公升,僅僅是沒有初始化)console.log(a); let a = 110; // cannot access 『a』 before initialization
2)let 配合 {} 也可以形成塊級作用域if(true)中被訪問到 出了塊就訪問不了
// let b = 666; // let + {} 形成塊級作用域
// }
// console.log(b); // b is not defined
3)使用let宣告的變數不會掛載到go上let a = 110;
console.log(window.a); // undefined 訪問乙個物件上沒有屬性,得到的就是und
4)使用let不能重複宣告let a = 1;
let a = 2;
console.log(a); // identifier 『a』 has already been declared
記住:不要使用var來定義變數(使用var宣告變數**執行時有提公升,比較複雜); 使用let宣告變數
const a = 110; // 定義了乙個常量(不會改變的量)a = 666;
console.log(a); // typeerror: assignment to constant variable.
1)也沒有提公升console.log(a);
const a = 1; // cannot access 『a』 before initialization
2)也會形成塊級作用域:if(true)
console.log(a); // a is not defin
3)使用const宣告的常量不會掛載到go上const a = 1;
console.log(window.a); // undefin
4)使用const不能重複宣告const a = 1;
const a = 2;
// identifier 『a』 has already been declared
console.log(a);
5)const在宣告常量時,必須賦值const a;
a = 1;
console.log(a); //syntaxerror: missing initializer in const declaration
看個例子:function sum(a)
//這裡因為a不能重複定義,所以語法錯誤,語法錯誤**直接不執行,顯示uncaught syntaxerror: identifier 『a』 has already been declared
sum(200)
console.log(b);
const a = 100;
console.log(a);
}sum(200)```//200 100
詳解let和const變數宣告
let和const在很多任務程師眼裡可能只是變數宣告符,其實錯了!它還是有很多小細節值得注意的,這裡我簡單介紹幾點。一 塊級作用域 在es6之前我們腦海裡應該只存在全域性作用域和函式級作用域,沒有塊級作用域。那麼為什麼要引入塊級作用域呢?相信很多剛入門的同學看到上述 會有所不解,其實在全域性作用域s...
let 和 const 宣告變數和常量 var
01 作用域只侷限於當前 塊 console.log str1 張三 console.log str2 無列印結果 02 使用let宣告的變數的作用域不會被提公升 03 在相同作用域下不能申明相同的變數 04 for迴圈體現let的父子作用域 var btns document.queryselec...
使用let宣告變數
es5宣告變數的問題 1.全域性變數掛載到全域性物件 全域性物件成員汙染問題。let宣告的變數不會掛載到全域性物件。2.允許重複的變數宣告,導致變數被覆蓋。let宣告的變數不允許當前作用域範圍內重複宣告。3.變數提公升 怪異的資料訪問,閉包問題。使用let不會有變數提公升,因此,不能在定義變數之前使...