经典面试题(3):关于this指向的常见面试题
大年初三凌晨1點(diǎn),繼續(xù)我們的經(jīng)典面試題系列,今天我們了解一下關(guān)于函數(shù)內(nèi)部this指向的問題,用一個(gè)簡單的例子來講解一下:
看下面的代碼,你覺得輸出的結(jié)果是什么?
var myObject = {foo: "bar",func: function() {var self = this;
console.log(this.foo);
console.log(self.foo);(function() {
console.log(this.foo);
console.log(self.foo);}());} }; myObject.func();
代碼中我們4次調(diào)用來console.log()來在控制臺(tái)輸出內(nèi)容,請問4次的內(nèi)容分別是什么?
在外部函數(shù)中, ?this?和?self?兩者都指向了?myObject??,因此兩者都可以正確地引用和訪問?foo?。?
在內(nèi)部函數(shù)中,?this不再指向myObject。其結(jié)果是,this.foo?沒有在內(nèi)部函數(shù)中被定義,相反,指向到本地的變量?self?保持在范圍內(nèi),并且可以訪問。 (在ECMA 5之前,在內(nèi)部函數(shù)中的this 將指向全局的 window 對(duì)象;反之,因?yàn)樽鳛镋CMA 5,內(nèi)部函數(shù)中的功能this 是未定義的。)
所以,上面的代碼將輸出以下內(nèi)容到控制臺(tái):
barbar
undefined
bar
熱門文章
原創(chuàng)教程原創(chuàng)教程:
附加習(xí)題:
職場焦慮:
感到迷茫:
培訓(xùn)出身:
培訓(xùn)費(fèi)用:
搞笑黑話:
職業(yè)自由:
職場形象:
合作推廣分割線
總結(jié)
以上是生活随笔為你收集整理的经典面试题(3):关于this指向的常见面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一线大厂青睐的前端人,90%满足这3个条
- 下一篇: 经典面试题(48):以下代码将输出的结果