JS作用域的理解

什么是作用域?

作用域是你的代碼在運(yùn)行時(shí),各個(gè)變量、函數(shù)和對(duì)象的可訪問性。換句話說,作用域決定了你的代碼里的變量和其他資源各個(gè)區(qū)域中的可見性。

JavaScript中的作用域

在 JavaScript 中有兩種作用域:

全局作用域

局部作用域

當(dāng)變量定義在一個(gè)函數(shù)中時(shí),變量就在局部作用域中,而定義在函數(shù)之外的變量則從屬于全局作用域。每個(gè)函數(shù)在調(diào)用的時(shí)候會(huì)創(chuàng)建一個(gè)新的作用域。

全局作用域

當(dāng)你在文檔中(document)編寫 JavaScript 時(shí),你就已經(jīng)在全局作用域中了。JavaScript 文檔中(document)只有一個(gè)全局作用域。定義在函數(shù)之外的變量會(huì)被保存在全局作用域中。

全局作用域里的變量能夠在其他作用域中被訪問和修改。

局部作用域

定義在函數(shù)中的變量就在局部作用域中。并且函數(shù)在每次調(diào)用時(shí)都有一個(gè)不同的作用域。這意味著同名變量可以用在不同的函數(shù)中。因?yàn)檫@些變量綁定在不同的函數(shù)中,擁有不同作用域,彼此之間不能訪問。

塊語句

塊級(jí)聲明包括if和switch,以及for和while循環(huán),和函數(shù)不同,它們不會(huì)創(chuàng)建新的作用域。在塊級(jí)聲明中定義的變量從屬于該塊所在的作用域。

上下文

很多開發(fā)者經(jīng)常弄混作用域和上下文,似乎兩者是一個(gè)概念。但并非如此。作用域是我們上面講到的那些,而上下文通常涉及到你代碼某些特殊部分中的this值。作用域指的是變量的可見性,而上下文指的是在相同的作用域中的this的值。我們當(dāng)然也可以使用函數(shù)方法改變上下文,這個(gè)之后我們?cè)儆懻摗T谌肿饔糜蛑?,上下文總?Window 對(duì)象。

參考文獻(xiàn):理解 JavaScript 作用域

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容