javascript关于this对象,在闭包函数中为什么会引用全局变量
生活随笔
收集整理的這篇文章主要介紹了
javascript关于this对象,在闭包函数中为什么会引用全局变量
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
因為你定義的name變量本身就是個全局變量,而你對象里面又沒有定義有相同的變量名,JavaScript會依次從內(nèi)部外部尋找name這個變量,你可以把變量寫到對象里面去。
默認都是指向全局對象的,瀏覽器是window。你這個code應(yīng)該
因為閉包里的this指向window,你可以在閉包里console.log(this)一下,會發(fā)現(xiàn)輸出window。至于為什么閉包里的this會指向window,我還分析不出。不過這個結(jié)果請牢記。
這個問題,并不是說閉包函數(shù)的this一定指向全局,而是函數(shù)作用域的問題,一個匿名函數(shù)作為返回值,這個匿名函數(shù)在執(zhí)行時已經(jīng)脫離了原來的scope,作用域變?yōu)榱巳郑瑃his自然指向全局。js中有很多這種情況,比如最常見的回調(diào)函數(shù)。
分析一下作用域 全局中object -- > object里面的name/getNameFunc --> getNameFunc函數(shù) -- > 返回函數(shù)的立即調(diào)用。
方法是誰調(diào)用的誰就是this。這個列子里面,object.getNameFunc()返回了一個自執(zhí)行函數(shù)
默認都是指向全局對象的,瀏覽器是window。你這個code應(yīng)該
因為閉包里的this指向window,你可以在閉包里console.log(this)一下,會發(fā)現(xiàn)輸出window。至于為什么閉包里的this會指向window,我還分析不出。不過這個結(jié)果請牢記。
這個問題,并不是說閉包函數(shù)的this一定指向全局,而是函數(shù)作用域的問題,一個匿名函數(shù)作為返回值,這個匿名函數(shù)在執(zhí)行時已經(jīng)脫離了原來的scope,作用域變?yōu)榱巳郑瑃his自然指向全局。js中有很多這種情況,比如最常見的回調(diào)函數(shù)。
分析一下作用域 全局中object -- > object里面的name/getNameFunc --> getNameFunc函數(shù) -- > 返回函數(shù)的立即調(diào)用。
方法是誰調(diào)用的誰就是this。這個列子里面,object.getNameFunc()返回了一個自執(zhí)行函數(shù)
總結(jié)
以上是生活随笔為你收集整理的javascript关于this对象,在闭包函数中为什么会引用全局变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输卵管堵塞属于不孕不育吗
- 下一篇: 佛教为什么有不同的路(为什么佛教会盛行)