我做了一個JavaScript的實驗在瀏覽器的控制檯 -做了一些JavaScript實驗,需要你的幫助,瞭解意外結果
首先,我創建了一個新對象foo如下
var foo = {
bar: function() { return this.baz; },
baz: 1
};
現在,當我運行下面的代碼又在控制檯返回"number"
(function(){
return typeof foo.bar();
})();
但是當我運行下面的匿名函數返回"undefined"
(function(){
return typeof arguments[0]();
})(foo.bar);
至於我在上面的函數返回foo.bar
(也被下面的例子證明)知道arguments[0]
那麼爲什麼上面的代碼返回"undefined"
代替"number"
?
當我運行
(function(){
return arguments[0];
})(foo.bar);
回報function() { return this.baz; }
而且
(function(){
return typeof arguments[0];
})(foo.bar());
返回"number"
那麼爲什麼不
(function(){
return typeof arguments[0]();
})(foo.bar);
返回相同嗎? JavaScript中是否有任何基本法律在這裏工作?
在第二個測試中,您將foo.bar作爲參數傳遞,但foo.bar不是屬性,而是一個函數。你可以嘗試傳遞foo.bar()作爲參數並檢查結果。 – ReX357