JavaScript 作用域

作用域指的是您有權訪問的變量集合。

JavaScript 函數作用域

在 JavaScript 中有兩種作用域類型:

  • 局部作用域
  • 全局作用域

JavaScript 擁有函數作用域:每個函數創建一個新的作用域。

作用域決定了這些變量的可訪問性(可見性)。

函數內部定義的變量從函數外部是不可訪問的(不可見的)。

局部 JavaScript 變量

在 JavaScript 函數中聲明的變量,會成為函數的局部變量

局部變量的作用域是局部的:只能在函數內部訪問它們。

實例

// 此處的代碼不能使用 carName 變量
function myFunction() {
    var carName = "porsche";
    // 此處的代碼能使用 carName 變量
}

親自試一試

由于只能在函數內部識別局部變量,因此能夠在不同函數中使用同名變量。

在函數開始時會創建局部變量,在函數完成時會刪除它們。

全局 JavaScript 變量

函數之外聲明的變量,會成為全局變量

全局變量的作用域是全局的:網頁的所有腳本和函數都能夠訪問它。

實例

var carName = " porsche";
// 此處的代碼能夠使用 carName 變量
function myFunction() {
    // 此處的代碼也能夠使用 carName 變量
}

親自試一試

JavaScript 變量

在 JavaScript 中,對象和函數也是變量。

作用域決定了從代碼不同部分對變量、對象和函數的可訪問性。

自動全局

如果您為尚未聲明的變量賦值,此變量會自動成為全局變量。

這段代碼將聲明一個全局變量 carName,即使在函數內進行了賦值。

實例

myFunction();
// 此處的代碼能夠使用 carName 變量
function myFunction() {
    carName = "porsche";
}

親自試一試

嚴格模式

所有現代瀏覽器都支持以“嚴格模式”運行 JavaScript。

您將在本教程稍后的章節學習更多如何使用嚴格模式的知識。

在“嚴格模式”中不會自動創建全局變量。

HTML 中的全局變量

通過 JavaScript,全局作用域形成了完整的 JavaScript 環境。

在 HTML 中,全局作用域是 window。所有全局變量均屬于 window 對象。

實例

var carName = "porsche";
// 此處的代碼能夠使用 window.carName

親自試一試

警告

除非有意為之,否則請勿創建全局變量。

您的全局變量(或函數)能夠覆蓋 window 變量(或函數)。

任何函數,包括 window 對象,能夠覆蓋您的全局變量和函數。

JavaScript 變量的有效期

JavaScript 變量的有效期始于其被創建時。

局部變量會在函數完成時被刪除。

全局變量會在您關閉頁面時被刪除。

函數參數

函數參數也是函數內的局部變量。