定義變數的三種方式及區別
阿新 • • 發佈:2021-11-06
區別一 使用var在全域性作用域中宣告的變數會成為window物件的屬性,let不會
var name='ll';
console.log(window.name); //ll
let age = 22;
console.log(window.age); //undefined
區別二 let宣告的範圍是塊作用域,var宣告的範圍是函式作用域
if(true){ var name='ll'; console.log(name);//ll } console.log(name); //ll if(true){ let age=22 console.log(age); //22 } console.log(age); //報錯 age未定義
區別三 let宣告的變數不會在作用域中被提升,var存在變數提升
console.log(age) //報錯 age未定義 在解析程式碼時,JavaScript引擎也會注意出現在塊後面的let宣告
let age=22;
var name = 'll';
function train(){
console.log(name);
var name = 'll'
}
train() //undefined;
區別四 let不允許同一個塊作用域出現冗餘宣告,var允許,後面宣告的變數值會覆蓋前一個。
var name = 'll'; var name = 'lu' let age = 22; let age = 31;//報錯 識別符號age已經宣告過了
對於宣告冗餘報錯不會因為混用let和var而受影響
const宣告
const的行為與let基本相同,唯一一個重要的區別是它宣告變數時必須同時初始化變數,且嘗試修改const宣告的變數會導致執行的錯誤
如果用const宣告的是一個物件,那麼修改這個物件內部的屬性並不違反const的限制