js問題輯錄--函數的環(huán)境變量在聲明時確定還是在執(zhí)行時確定?

函數的環(huán)境變量在聲明時確定還是在執(zhí)行時確定?

var a = 'this is a';
var b = 'this is b'
function showA(){
    return a;
}

function showOtherA(){
    var a = "this is other a";
    return showA()
}
showA()  // 執(zhí)行結果:"this is a"
showOtherA(); // 執(zhí)行結果:"this is a"

假設1. 函數的環(huán)境變量在聲明時確定。
如果在聲明時確定,那么這個函數在任何環(huán)境下執(zhí)行時,其能夠訪問的變量在其定義的環(huán)境內。那么用局部變量覆蓋同名的環(huán)境變量,在局部環(huán)境中執(zhí)行該函數,該函數還是不會訪問到局部變量。

假設2. 函數的環(huán)境變量在執(zhí)行時確定。
那么函數在執(zhí)行時會直接取其所在的局部變量中的變量值。

根據代碼執(zhí)行結果可值,假設1 成立。

結論是: 函數的環(huán)境變量在函數聲明時確立。

那么根據此結論,可以推斷,一個函數定義在全局環(huán)境中,其需要訪問變量中要是缺少某個變量值。那么在局部環(huán)境中執(zhí)行此函數,即便局部環(huán)境中有哪個缺少的變量,此函數依然會報錯。
測試代碼如下:

function showB(){
    return b;
}

function master(){
    var b = "this is char b";
    return showB()
}
master()  // 執(zhí)行結果 error b is not defines

由此可見,前面的結論正確

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容