Javascript函數(shù)之函數(shù)的作用域是什么詳解
1、引出作用域
以下兩種情況都會報錯
for (let i = 0; i < 3; i++) {
document.write('怎么回事呢')
}
console.log(i) //Uncaught ReferenceError: i is not defined function fun() {
let num2 = 30
}
fun()
console.log(num2) //um2 is not defined2、作用域定義
通常來說,一般程序代碼中所用到的名字并不總是有效和可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域。
作用域的使用提高了程序邏輯的局部性,增強了程序的可靠性,減少名字沖突。
現(xiàn)階段作用域分為全局作用域和局部作用域
3、全局作用域
全局有效
作用于所有代碼執(zhí)行的環(huán)境(整個script標(biāo)簽內(nèi)部)或者一個獨立的js文件。
全局變量在任何區(qū)域都可以訪問和修改

4、局部作用域
局部有效
作用于函數(shù)內(nèi)的代碼環(huán)境,就是局部作用域。因為跟函數(shù)有關(guān)系,所以也稱為函數(shù)作用域。
局部變量只能在當(dāng)前函數(shù)內(nèi)部訪問和修改

5、特殊變量情況
變量有一個坑,特殊情況:
如果函數(shù)內(nèi)部,變量沒有聲明,直接賦值,也當(dāng)全局變量看,但是強烈不推薦。

函數(shù)內(nèi)部的形參可以看做是局部變量,在函數(shù)內(nèi)部可以使用。

6、變量訪問原則
在不同作用域下,可能存在變量命名沖突的情況,到底該執(zhí)行誰呢?即【就近原則】
(1)只要是代碼,就至少有一個作用域
(2)寫在函數(shù)內(nèi)部的局部作用域
(3)如果函數(shù)中還有函數(shù),那么在這個作用域中就又可以誕生一個作用域
(4)訪問原則:在能夠訪問到的情況下,先布局,局部沒有再找全局

總結(jié)
到此這篇關(guān)于Javascript函數(shù)之函數(shù)的作用域是什么的文章就介紹到這了,更多相關(guān)js函數(shù)的作用域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實例詳解JavaScript靜態(tài)作用域和動態(tài)作用域
作用域是指程序源代碼中定義變量的區(qū)域,作用域規(guī)定了如何查找變量,也就是確定當(dāng)前執(zhí)行代碼對變量的訪問權(quán)限,這篇文章主要給大家介紹了關(guān)于JavaScript靜態(tài)作用域和動態(tài)作用域的相關(guān)資料,需要的朋友可以參考下2021-10-10

