var、let、const 的差異?
Oct 20, 2021
傳統var
作用域:function scope
也就是在function內宣告的var變數,要在function中才有用。
若是在function外用var宣告變數,則作用域為全域global。
//var的問題function myfun(){建議改用let number = 1
var number = 1;
console.log(number); //ok}
console.log(number); // error, number is not defined,
//var汙染全域變數, 建議改用let index = 0for(var index = 0 ; index < 10 ; index++){
console.log(index);}
console.log(index); //居然會出現10
var 可以重複宣告,不會報錯。
var james =1 ;
var james =2;
console.log(james);
let:
1.不會產生全域變數,也禁止在同一層Block重複宣告let變數。
let james =1;
let James =2;
console.log(james); //Uncaught SyntaxError: Identifier 'james' has already been declaredvar james =1;
let James =2;
console.log(james); //Uncaught SyntaxError: Identifier 'james' has already been declared
但如果var 和let 在不同層,就不會出錯。
var james = 1;
for ( let james = 10 ; james <=11; james++){
console.log(“james = “ + james);
}
console.log(“james Out of function = “ + james);
Const:
一旦宣告變數後,就不可改動。
const james =1 ;
james =2; // error. Assignment to constant variable.
console.log(james);
Ref
1. https://www.youtube.com/watch?v=Y50_RSWpWkA&t=258s
在2 hours: 23mins 開始