var、let、const 的差異?

傳統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 = 0
for(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 declared
var 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 開始

2.https://realdennis.medium.com/%E9%96%92%E8%81%8A-var%E8%88%87let%E7%9A%84%E6%87%B6%E4%BA%BA%E5%8C%85-javascript-b5a3f40ee28d

--

--

Jameskrauser Lee

For the last few years. i was involved mostly in the development of Automatic Fare collection system for the Chennai Metro. Familiar with C++ and iOS.