作用域的意思就是 "變數可以使用的範圍"
只存活在宣告的 function 內
// function scope
function a1() {
var a = 1
console.log(a)
}
a1() // 1
console.log(a) // error: not defined
// block scope
if (true) {
var b = 2
}
console.log(b) // 2
只存活在宣告的 區塊 內
// function scope
function a1() {
let a = 1
console.log(a)
}
a1() // 1
console.log(a) // error: not defined
// block scope
if (true) {
let b = 2
}
console.log(b) // error: not defined
除了在函式或區塊作用域中定義的變數,其餘的變數皆為全域變數,可以在任何作用域中被取用
在瀏覽器中,window 代表全域物件,若在全域中用 var 宣告一個變數會產生在 window 物件下,可用 window. 的方式去呼叫
用 var 宣告的變數 會 產生在全域物件下
var a = 1
window.a // 1
用 let / const 宣告的變數 不會 產生在全域物件下
let a = 1
window.a // undefiend