一篇文章帶你了解JavaScript作用域
共 3523字,需瀏覽 8分鐘
·
2024-04-23 10:00
回復(fù)“前端”即可獲贈(zèng)前端相關(guān)學(xué)習(xí)資料
在JavaScript中,對(duì)象和函數(shù)也是變量。在JavaScript中,作用域是你可以訪問(wèn)的變量、對(duì)象和函數(shù)的集合。
JavaScript 有函數(shù)作用域: 這個(gè)作用域在函數(shù)內(nèi)變化。
一、本地JavaScript變量
一個(gè)變量聲明在JavaScript函數(shù)內(nèi)部,成為函數(shù)的局部變量。
局部變量有局部作用域: 它們只能在函數(shù)中訪問(wèn)。
JS:
//code here can not use carName<script>reFunction();document.getElementById("demo").innerHTML ="carName的類型是 " + typeof carName;function reFunction() {var carName = "Volvo";}</script>
由于局部變量只在它們的函數(shù)中被識(shí)別,所以具有相同名稱的變量可以在不同的函數(shù)中使用。
當(dāng)函數(shù)啟動(dòng)時(shí)創(chuàng)建局部變量,當(dāng)函數(shù)完成時(shí)刪除。
二、全局JavaScript變量
函數(shù)外聲明的變量, 成為全局變量。
全局變量具有全局作用域: 網(wǎng)頁(yè)上的所有腳本和函數(shù)都可以訪問(wèn)它。
<script>var carName = "Volvo"; //可以從任何腳本或函數(shù)訪問(wèn)全局變量myFunction();function myFunction() {document.getElementById("demo").innerHTML ="I can display " + carName;}</script>
自動(dòng)全局
如果給未聲明的變量賦值, 它會(huì)自動(dòng)成為全局變量。
此代碼示例將聲明一個(gè)全局變量carName,即使賦的值是函數(shù)內(nèi)部。
myFunction();// code here can use carNamefunction myFunction() {carName = "Volvo";}
不要?jiǎng)?chuàng)建全局變量,除非你非常需要,在嚴(yán)格模式下 "Strict Mode"自動(dòng)全局變量將失敗。
三、在HTML中的全局變量
在JavaScript中,全局作用域是完整的JavaScript環(huán)境。
在HTML中,全局作用域是window對(duì)象。所有的全局變量都屬于window對(duì)象。
<html lang="en"><head><meta charset="UTF-8"><title>項(xiàng)目</title></head><body style="background-color: aqua;"><p>在HTML中,所有的全局變量將成為窗口window變量。</p><p id="demo"></p><script>var carName = "Volvo";// code here can use window.carNamedocument.getElementById("demo").innerHTML = "I can display " + window.carName;</script></body></html>
全局變量(或函數(shù))可以覆蓋窗口變量(或函數(shù)). 任何函數(shù),包括窗口對(duì)象,都可以覆蓋全局變量和函數(shù)。
四、JavaScript 代碼塊作用域
表中是var,let和const之間的區(qū)別。
| 關(guān)鍵詞 | 范圍 | 可以重新分配 | 可以重新聲明 |
|---|---|---|---|
| var | 函數(shù)作用域 | 是 | 是 |
| let | 塊作用域 | 是 | 否 |
| const | 塊作用域 | 否 | 否 |
用var關(guān)鍵字聲明的變量不能具有塊作用域,{}可以從塊外部訪問(wèn)在塊內(nèi)部聲明的變量:
{var num = 50;}// num 能在這里使用
用let關(guān)鍵字聲明的變量可以具有“塊作用域”。
{}不能從塊外部訪問(wèn)在塊內(nèi)部聲明的變量:
{let num = 50;}// num不能在這里使用
聲明變量with const與let]涉及塊作用域類似。
{const num = 50;}// num不能在這里使用
常量的值不能通過(guò)重新分配而更改,也不能重新聲明。
五、總結(jié)
本文基于JavaScript,介紹了了函數(shù)作用域和變量作用域。介紹了變量中全局變量的幾種顯示的方法,在HTML中的全局變量應(yīng)該如何去表示。通過(guò)案例的講解,讓讀者更好的去理解。
代碼很簡(jiǎn)單, 希望能夠幫助你學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入前端學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
