眾所周知,var,let 是聲明變數的,const是聲明常量的 先簡單剖析一下,var,let的區別 var 在ES6之前使用,而到了ES6之後官方就不推薦使用了,究其原因還是因為它自身的原因,導致代碼令人感覺不太合理。 console.log(num); var num = 10; // 列印 u ...
眾所周知,var,let 是聲明變數的,const是聲明常量的
先簡單剖析一下,var,let的區別
var 在ES6之前使用,而到了ES6之後官方就不推薦使用了,究其原因還是因為它自身的原因,導致代碼令人感覺不太合理。
console.log(num); var num = 10; // 列印 undefined, 而不是報錯, 這說明var將變數的聲明提升
// var num; num = 10; console.log(num); // 列印 10, var 將變數num的聲明提升到最頂層 var num;
for(var i=0;i<5;i++){ console.log("222222",i); } console.log("ssss",i) //由於用var聲明的i,所以在這裡能獲取到for迴圈中的i,產生了變數污染
而如果換成let的話就會提示很正確的錯誤。
console.log(num1); let num1 = 10; //Uncaught ReferenceError: Cannot access 'num1' before initialization
for(let i=0;i<5;i++){ console.log("222222",i); } console.log("ssss",i) //Uncaught ReferenceError: i is not defined 這是正常的錯誤
const 聲明的常量不能修改;
const num = 10 num = 11 // TypeError: Assignment to constant variable. console.log("num:",num)
const num; num = 10; // Uncaught SyntaxError: Missing initializer in const declaration console.log(num)