更新時(shí)間:2023年02月15日15時(shí)53分 來(lái)源:傳智教育 瀏覽次數(shù):
通常來(lái)說(shuō),一段代碼中所用到的名字(如變量名)并不總是有效和可用的,而限定這個(gè)名字的可用性的代碼范圍就是這個(gè)名字的作用域。作用域機(jī)制可以有效減少命名沖突的情況發(fā)生。本節(jié)將對(duì)作用域進(jìn)行詳細(xì)講解。
作用域的分類(lèi)
通過(guò)前面的學(xué)習(xí),我們知道變量需要先聲明后使用,但這并不意味著聲明變量后就可以在任意位置使用該變量。例如,在函數(shù)中聲明一個(gè)age變量,在函數(shù)外進(jìn)行訪問(wè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è)作用范圍稱(chēng)為變量的作用域。JavaScript根據(jù)作用域使用范圍的不同,將其劃分為全局作用域、函數(shù)作用域和塊級(jí)作用域(ES6提供的)。上述示例聲明的age變量只能在info0函數(shù)體內(nèi)才可以使用。
作用域的使用提高了程序邏輯的局部性,增強(qiáng)了程序的可靠性,減少了名字沖突。
全局作用域
作用于所有代碼執(zhí)行的環(huán)境(整個(gè) script 標(biāo)簽內(nèi)部)或者一個(gè)獨(dú)立的 js 文件處于全局作用域內(nèi)的變量,稱(chēng)為全局變量
局部作用域
作用于函數(shù)內(nèi)的代碼環(huán)境,就是局部作用域。 因?yàn)楦瘮?shù)有關(guān)系,所以也稱(chēng)為函數(shù)作用域。處于局部作用域內(nèi)的變量稱(chēng)為局部變量如果函數(shù)內(nèi)部,變量沒(méi)有聲明,直接賦值,也當(dāng)全局變量看,但是強(qiáng)烈不推薦但是有一種情況,函數(shù)內(nèi)部的形參可以看做是局部變量。
offset與style的區(qū)別是什么?
2023-01-10模擬Session機(jī)制實(shí)現(xiàn)數(shù)據(jù)庫(kù)存放會(huì)話數(shù)據(jù)有什么作用?
2023-01-06零基礎(chǔ)學(xué)前端開(kāi)發(fā)要多久能學(xué)會(huì)?
2023-01-03前端開(kāi)發(fā)入門(mén),Web前端HTML5+CSS3視頻教程
2022-12-29通過(guò)form表單提交數(shù)據(jù)存在哪些缺點(diǎn)?
2022-12-27什么是前端?前端培訓(xùn)出來(lái)能做哪些工作?
2022-12-27北京校區(qū)