var foo = {
bar: function() { return this.baz; },
baz: 1
};
(function(){
return typeof arguments[0]();
})(foo.bar);
爲什麼此代碼返回undefined
?函數參數傳遞和返回
我會假設arguments[0]
將持有foo.bar
,這是一個函數。當通過arguments[0]()
調用時,它應該返回函數評估的結果,在這種情況下爲1
。因此,typeof arguments[0]()
應返回「號碼」(如typeof 1
)。相反,它返回undefined
。爲什麼?
它不。 'this'關鍵字指向執行上下文。在給定的例子中,這就是調用它的匿名函數的範圍。由於它本身是從全局範圍調用的,因此'this'只是指向全局'window'對象。 – PPvG 2011-12-21 10:04:23
如果我們在這個對象中有很多的功能,並且我們想改變foo的名字,那將會令人尷尬:) – abuduba 2011-12-21 10:09:39
爲什麼這是公認的答案?我認爲這個問題是*「爲什麼這個代碼返回'undefined'?」*,而不是*「你能幫我找到一個醜陋的黑客來解決這個問題嗎?」*。 – PPvG 2011-12-23 10:34:15