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