- local scope / function scope
每個function都會建立一個作用域(scope),在function之內宣告的變數,外面看不到,也不可訪問/使用。
- global scope
作用域(scope),會決定
- 可見性(visibility)
- 可訪問性(accessibility)
區域變數(Local Variables)
- 宣告在function中的變數,只有在該function中可見、可訪問
- 區域變數,在function開始時建立,function結束時移除
function myFunction1() {
var userName = 'Shawn';
// userName = 'Shawn'
}
// userName undefined
全域變數(Global Variables)
- 宣告在function外的變數,就是全域變數
- 在網頁中的所有script和function都可見、可訪問
var userDept = 'Marketplace';
function myFunction2() {
// userDept = 'Marketplace'
}
// userDept = 'Marketplace'
變數(Variables)
在javascript中,object 和 function 也是變數(variables)。
所以object 和 function 的可見性、可訪問性也是遵循作用域(scope)的規則。
自動判定為全域變數(Automatically Global)
若在function中的變數沒有宣告,則自動變成全域。
function myFunction3() {
sex = 'male';
// sex = 'male';
}
// sex = 'male'
嚴格模式(Strict mode)
為了避免自動判定為全域變數(Automatically Global)的問題,可以使用嚴格模式(Strict mode),在嚴格模式中,變數不會被自動視為全域。
全域變數在HTML中(Global Variables in HTML)
所有的全域變數,都會自動存在window物件底下。
var birthday = '1/1';
window.birthday; // 1/1
盡量避免使用全域變數,因為可以蓋來蓋去
javascript變數的生命週期
- 變數的生命起始於宣告。
- 區域變數在function結束時中止。
- 全域變數在瀏覽器關閉或瀏覽器頁面關閉時終止。
- function的參數視為區域變數。
沒有留言:
張貼留言