在 JavaScript 中,Var、Let、Const 的差異?

Var

露出去的變數 i

for(var i = 0; i<10; i++) {
console.log(i)
}
console.log(i) // undefined

function scope:function 外就存取不到變數 i

function printing(){
for(var i = 0; i<10; i++) {
console.log(i)
}
}
printing()
console.log(i) // Uncaught ReferenceError: i is not defined

IIFE (immediately invoked function expression) 立即執行函式:將變數 i 鎖在 function scope 中。

(function (){
for(var i = 0; i<10; i++) {
console.log(i)
}
})()


Let

block scope:block {} 外就存取不到變數 i

for(let i = 0; i<10; i++) {
console.log(i)
}
console.log(i) // Uncaught ReferenceError: i is not defined


Const

如果在一段程式碼中,確定不會更動變數的值,就使用 const 來宣告變數。

const dog={
age: 3
}
dog.age = 5
dog = { name: 'biko'} // Uncaught TypeError: Assignment to constant variable.

可以改變物件下的屬性(property),而不能重新把變數 dog 指向一個新的物件。


Reference

Javascript variables; should you use let, var or const?

開發者一定要知道的 GIT tricks 談一下 CSS Specificity

留言