在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 作用域,作用域鏈問題

作用域,作用域鏈問題

代碼如下:

var scope = "global scope";
function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f;
}
checkscope()();

問題:1,為什么f()函數(shù)返回的是"local scope",
2,自己用谷歌調(diào)試,斷點(diǎn)至f結(jié)束,如下圖,此時(shí)checkscope執(zhí)行上下文已經(jīng)出棧,為什么還是"local scope",為什么不是"global scope"?
clipboard.png

回答
編輯回答
默念
  1. 函數(shù)的作用域只和它定義的地方有關(guān),而與它運(yùn)行的地方無(wú)關(guān)。

  2. 這就是閉包的典型應(yīng)用。

2017年11月28日 07:23
編輯回答
耍太極

scope是一層一層往外找的,先找到的是函數(shù)checkscope里面的
如果你想返回"global scope",那函數(shù)f返回帶上this就行了,在全局作用域調(diào)用this會(huì)指向window

function f(){
    return this.scope;
}
2018年3月19日 11:45
編輯回答
舊城人

這其實(shí)是個(gè)閉包問題。

2018年6月14日 04:53