JavaScript 作用域

JavaScript 作用域

  • JS 異常
  • JS Hoisting


JavaScript 作用域


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

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 變量的有效期始於其被創建時。

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

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


分享到:


相關文章: