更新時間:2023-10-27 來源:黑馬程序員 瀏覽量:

通常來說,一段代碼中所用到的名字(如變量名)并不總是有效和可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域。作用域機制可以有效減少命名沖突的情況發(fā)生。本節(jié)將對作用域進行詳細講解。
作用域的分類
通過前面的學(xué)習(xí),我們知道變量需要先聲明后使用,但這并不意味著聲明變量后就可以在任意位置使用該變量。例如,在函數(shù)中聲明一個age變量,在函數(shù)外進行訪問,就會出現(xiàn)age變量未定義的錯誤,示例代碼如下。
function info() {
var age = 18;
}
info();
console.log(age); //報錯,提示age is not defined(age未定義)
從上述代碼可以看出,變量需要在它的作用范圍內(nèi)才可以被使用,這個作用范圍稱為變量的作用域。JavaScript根據(jù)作用域使用范圍的不同,將其劃分為全局作用域、函數(shù)作用域和塊級作用域(ES6提供的)。上述示例聲明的age變量只能在info0函數(shù)體內(nèi)才可以使用。
作用域的使用提高了程序邏輯的局部性,增強了程序的可靠性,減少了名字沖突。
全局作用域
作用于所有代碼執(zhí)行的環(huán)境(整個 script 標(biāo)簽內(nèi)部)或者一個獨立的 js 文件處于全局作用域內(nèi)的變量,稱為全局變量
局部作用域
作用于函數(shù)內(nèi)的代碼環(huán)境,就是局部作用域。 因為跟函數(shù)有關(guān)系,所以也稱為函數(shù)作用域。處于局部作用域內(nèi)的變量稱為局部變量如果函數(shù)內(nèi)部,變量沒有聲明,直接賦值,也當(dāng)全局變量看,但是強烈不推薦但是有一種情況,函數(shù)內(nèi)部的形參可以看做是局部變量。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19