首頁技術(shù)文章正文

JavaScript作用域分為哪幾種類型?

更新時(shí)間:2022-03-17 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

通常來說,一段代碼中所用到的名字(如變量名)并不總是有效和可用的,而限定這個(gè)名字的可用性的代碼范圍就是這個(gè)名字的作用域。作用域機(jī)制可以有效減少命名沖突的情況發(fā)生。本節(jié)將對(duì)作用域進(jìn)行詳細(xì)講解。

作用域的分類

通過前面的學(xué)習(xí),我們知道變量需要先聲明后使用,但這并不意味著聲明變量后就可以在任意位置使用該變量。例如,在函數(shù)中聲明一個(gè)age變量,在函數(shù)外進(jìn)行訪問,就會(huì)出現(xiàn)age變量未定義的錯(cuò)誤,示例代碼如下。

function info() {
    var age = 18;
}
info();
console.log(age); //報(bào)錯(cuò),提示age is not defined(age未定義)


從上述代碼可以看出,變量需要在它的作用范圍內(nèi)才可以被使用,這個(gè)作用范圍稱為變量的作用域。JavaScript根據(jù)作用域使用范圍的不同,將其劃分為全局作用域、函數(shù)作用域和塊級(jí)作用域(ES6提供的)。上述示例聲明的age變量只能在info0函數(shù)體內(nèi)才可以使用。

接下來我們針對(duì)JavaScript中不同作用域內(nèi)聲明的變量進(jìn)行介紹。

①全局變量:不在任何函數(shù)內(nèi)聲明的變量(顯式定義)或在函數(shù)內(nèi)省略var聲明的變量隱式定義)都稱為全局變量,它在同一個(gè)頁面文件中的所有腳本內(nèi)都可以使用。

②局部變量:在函數(shù)體內(nèi)利用var關(guān)鍵字定義的變量稱為局部變量,它僅在該函數(shù)體內(nèi)有效。

③塊級(jí)變量:ES6提供的let關(guān)鍵字聲明的變量稱為塊級(jí)變量,僅在“0”中間有效,如if、for或while語句等。

對(duì)于初學(xué)者來說,重點(diǎn)是理解全局變量和局部變量的區(qū)別,而塊級(jí)變量和let關(guān)鍵字屬于ES6的新增內(nèi)容,讀者此時(shí)僅簡(jiǎn)單了解即可。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!