javascript關(guān)于this對象,在閉包函數(shù)中為什么會引用全局變量?
美少女戰(zhàn)士劇場版
17小時前
yangpansui 17小時前
gwy2002y 17小時前
wsy881688 17小時前
carmensim 17小時前
dhkoifg 17小時前
因為你定義的name變量本身就是個全局變量,而你對象里面又沒有定義有相同的變量名,JavaScript會依次從內(nèi)部外部尋找name這個變量,你可以把變量寫到對象里面去。
yangpansui 17小時前
默認都是指向全局對象的,瀏覽器是window。你這個code應(yīng)該
gwy2002y 17小時前
因為閉包里的this指向window,你可以在閉包里console.log(this)一下,會發(fā)現(xiàn)輸出window。至于為什么閉包里的this會指向window,我還分析不出。不過這個結(jié)果請牢記。
wsy881688 17小時前
這個問題,并不是說閉包函數(shù)的this一定指向全局,而是函數(shù)作用域的問題,一個匿名函數(shù)作為返回值,這個匿名函數(shù)在執(zhí)行時已經(jīng)脫離了原來的scope,作用域變?yōu)榱巳郑瑃his自然指向全局。js中有很多這種情況,比如最常見的回調(diào)函數(shù)。
carmensim 17小時前
分析一下作用域 全局中object -- > object里面的name/getNameFunc --> getNameFunc函數(shù) -- > 返回函數(shù)的立即調(diào)用。
dhkoifg 17小時前
方法是誰調(diào)用的誰就是this。這個列子里面,object.getNameFunc()返回了一個自執(zhí)行函數(shù)
