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