詳解JavaScript 作用域
作用域是可訪問(wèn)變量的集合。
JavaScript 作用域
在 JavaScript 中, 對(duì)象和函數(shù)同樣也是變量。
在 JavaScript 中, 作用域?yàn)榭稍L問(wèn)變量,對(duì)象,函數(shù)的集合。
JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。
JavaScript 局部作用域
變量在函數(shù)內(nèi)聲明,變量為局部作用域。
局部變量:只能在函數(shù)內(nèi)部訪問(wèn)。
// 此處不能調(diào)用 carName 變量function myFunction() { var carName = 'Volvo'; // 函數(shù)內(nèi)可調(diào)用 carName 變量}
因?yàn)榫植孔兞恐蛔饔糜诤瘮?shù)內(nèi),所以不同的函數(shù)可以使用相同名稱的變量。
局部變量在函數(shù)開(kāi)始執(zhí)行時(shí)創(chuàng)建,函數(shù)執(zhí)行完后局部變量會(huì)自動(dòng)銷(xiāo)毀。
JavaScript 全局變量
變量在函數(shù)外定義,即為全局變量。
全局變量有 全局作用域: 網(wǎng)頁(yè)中所有腳本和函數(shù)均可使用。
var carName = ' Volvo'; // 此處可調(diào)用 carName 變量function myFunction() { // 函數(shù)內(nèi)可調(diào)用 carName 變量}
如果變量在函數(shù)內(nèi)沒(méi)有聲明(沒(méi)有使用 var 關(guān)鍵字),該變量為全局變量。
以下實(shí)例中 carName 在函數(shù)內(nèi),但是為全局變量。
// 此處可調(diào)用 carName 變量 function myFunction() { carName = 'Volvo'; // 此處可調(diào)用 carName 變量}
JavaScript 變量生命周期
JavaScript 變量生命周期在它聲明時(shí)初始化。
局部變量在函數(shù)執(zhí)行完畢后銷(xiāo)毀。
全局變量在頁(yè)面關(guān)閉后銷(xiāo)毀。
函數(shù)參數(shù)
函數(shù)參數(shù)只在函數(shù)內(nèi)起作用,是局部變量。
HTML 中的全局變量
在 HTML 中, 全局變量是 window 對(duì)象: 所有數(shù)據(jù)變量都屬于 window 對(duì)象。
//此處可使用 window.carName function myFunction() { carName = 'Volvo';}
你知道嗎?
你的全局變量,或者函數(shù),可以覆蓋 window 對(duì)象的變量或者函數(shù)。局部變量,包括 window 對(duì)象可以覆蓋全局變量和函數(shù)。
補(bǔ)充
ES6 中的 let 關(guān)鍵字
let 允許你聲明一個(gè)作用域被限制在塊級(jí)中的變量、語(yǔ)句或者表達(dá)式。與var關(guān)鍵字不同的是,它聲明的變量只能是全局或者整個(gè)函數(shù)塊的。
let 語(yǔ)法:
let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];
let 聲明的變量只在其聲明的塊或子塊中可用,這一點(diǎn),與 var 相似。二者之間最主要的區(qū)別在于 var 聲明的變量的作用域是整個(gè)封閉函數(shù)。
let 和 var 的區(qū)別代碼實(shí)例:
function varTest() { var x = 1; if (true) { var x = 2; // 同樣的變量! console.log(x); // 2 } console.log(x); // 2}function letTest() { let x = 1; if (true) { let x = 2; // 不同的變量 console.log(x); // 2 } console.log(x); // 1}
以上就是詳解JavaScript 作用域的詳細(xì)內(nèi)容,更多關(guān)于JavaScript 作用域的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 解決python腳本中error: unrecognized arguments: True錯(cuò)誤2. python檢查目錄文件權(quán)限并修改目錄文件權(quán)限的操作3. css進(jìn)階學(xué)習(xí) 選擇符4. java不解壓直接讀取壓縮包中文件的實(shí)現(xiàn)方法5. jsp+servlet實(shí)現(xiàn)猜數(shù)字游戲6. ASP.NET Core按用戶等級(jí)授權(quán)的方法7. Ajax對(duì)xml信息的接收和處理操作實(shí)例分析8. JSP實(shí)現(xiàn)文件上傳功能9. java中Servlet監(jiān)聽(tīng)器的工作原理及示例詳解10. ASP基礎(chǔ)知識(shí)Command對(duì)象講解
