JavaScript 作用域
javascript 作用域
作用域指的是您有權訪問的變量集合。
1. javascript 函數作用域
在 javascript 中有兩種作用域類型:
- 局部作用域
- 全局作用域
javascript 擁有函數作用域:每個函數創建一個新的作用域。
作用域決定了這些變量的可訪問性(可見性)。
函數內部定義的變量從函數外部是不可訪問的(不可見的)。
2. 局部 javascript 變量
在 javascript 函數中聲明的變量,會成為函數的局部變量。
局部變量的作用域是局部的:只能在函數內部訪問它們。
范例
// 此處的代碼不能使用 carname 變量 function myfunction() { var carname = "porsche"; // 此處的代碼能使用 carname 變量 }
由于只能在函數內部識別局部變量,因此能夠在不同函數中使用同名變量。
在函數開始時會創建局部變量,在函數完成時會刪除它們。
3. 全局 javascript 變量
函數之外聲明的變量,會成為全局變量。
全局變量的作用域是全局的:網頁的所有腳本和函數都能夠訪問它。
范例
var carname = " porsche"; // 此處的代碼能夠使用 carname 變量 function myfunction() { // 此處的代碼也能夠使用 carname 變量 }
4. javascript 變量
在 javascript 中,對象和函數也是變量。
作用域決定了從代碼不同部分對變量、對象和函數的可訪問性。
5. 自動全局
如果您為尚未聲明的變量賦值,此變量會自動成為全局變量。
這段代碼將聲明一個全局變量 carname,即使在函數內進行了賦值。
范例
myfunction();
// 此處的代碼能夠使用 carname 變量
function myfunction() {
carname = "porsche";
}
6. 嚴格模式
所有現代瀏覽器都支持以“嚴格模式”運行 javascript。
您將在本教程稍后的章節學習更多如何使用嚴格模式的知識。
在“嚴格模式”中不會自動創建全局變量。
7. html 中的全局變量
通過 javascript,全局作用域形成了完整的 javascript 環境。
在 html 中,全局作用域是 window。所有全局變量均屬于 window 對象。
范例
var carname = "porsche";
// 此處的代碼能夠使用 window.carname
8. 警告
除非有意為之,否則請勿創建全局變量。
您的全局變量(或函數)能夠覆蓋 window 變量(或函數)。
任何函數,包括 window 對象,能夠覆蓋您的全局變量和函數。
9. javascript 變量的有效期
javascript 變量的有效期始于其被創建時。
局部變量會在函數完成時被刪除。
全局變量會在您關閉頁面是被刪除。
10. 函數參數
函數參數也是函數內的局部變量。