JavaScript 作用域

2022-05-18 14:20 更新

作用域是可訪問變量的集合。

在JavaScript中,能夠定義全局作用域或者局部作用域。

在 JavaScript 中, 對象和函數(shù)同樣也是變量。

在 JavaScript 中, 作用域為可訪問變量,對象,函數(shù)的集合。

JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。


JavaScript 局部作用域

變量在函數(shù)內(nèi)聲明,變量為局部作用域。

局部變量:只能在函數(shù)內(nèi)部訪問。

實例

// 此處不能調(diào)用 carName 變量

function myFunction() {
    var carName = "Volvo";

    // 函數(shù)內(nèi)可調(diào)用 carName 變量

}

嘗試一下 ?

因為局部變量只作用于函數(shù)內(nèi),所以不同的函數(shù)可以使用相同名稱的變量。

局部變量在函數(shù)開始執(zhí)行時創(chuàng)建,函數(shù)執(zhí)行完后局部變量會自動銷毀。


JavaScript 全局變量

變量在函數(shù)外定義,即為全局變量。

全局變量有 全局作用域: 網(wǎng)頁中所有腳本和函數(shù)均可使用。 

實例

var carName = " Volvo";

// 此處可調(diào)用 carName 變量

function myFunction() {

    // 函數(shù)內(nèi)可調(diào)用 carName 變量

}

嘗試一下 ?

如果變量在函數(shù)內(nèi)沒有聲明(沒有使用 var 關(guān)鍵字),該變量為全局變量。

以下實例中 carName 在函數(shù)內(nèi),但是為全局變量。

實例

// 此處可調(diào)用 carName 變量

function myFunction() {
    carName = "Volvo";

    // 此處可調(diào)用 carName 變量

}

嘗試一下 ?


JavaScript 變量生命周期

JavaScript 變量生命周期在它聲明時初始化。

局部變量在函數(shù)執(zhí)行完畢后銷毀。

全局變量在頁面關(guān)閉后銷毀。


函數(shù)參數(shù)

函數(shù)參數(shù)只在函數(shù)內(nèi)起作用,是局部變量。


HTML 中的全局變量

在 HTML 中, 全局變量是 window 對象: 所有數(shù)據(jù)變量都屬于 window 對象。

實例

//此處可使用 window.carName

function myFunction() {
    carName = "Volvo";
}

嘗試一下 ?


你知道嗎?

Note 你的全局變量,或者函數(shù),可以覆蓋 window 對象的變量或者函數(shù)。
局部變量,包括 window 對象可以覆蓋全局變量和函數(shù)。
Note

在 ES6 中,提供了 let 關(guān)鍵字和 const 關(guān)鍵字。

let 的聲明方式與 var 相同,用 let 來代替 var 來聲明變量,就可以把變量限制在當(dāng)前代碼塊中。

使用 const 聲明的是常量,其值一旦被設(shè)定便不可被更改。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號