2013-07-31 77 views
1

我有以下幾點:立即調用的函數是 '未定義'

var catCreyz = function() { console.log('maaaow'); }.call() 

,當我測試它的類型:

typeof catCreyz 

返回的結果是:

不確定

爲什麼?

+6

這是因爲.call()位執行函數並返回結果,在這種情況下未定義結果。 – furydevoid

+1

你爲什麼認爲這會是'功能'? –

+0

因爲'call'沒有結果? –

回答

4

Function.prototype.call返回被調用函數的返回值。你的函數沒有返回

var catCreyz = function() { console.log('maaaow'); }.call() 
//logs undefined 
console.log(catCreyz); 

var result = function() { return "foo"; }.call() 
//logs foo 
console.log(result); 

var myFunc = function() { console.log('maaaow'); } 
//logs the function 
console.log(myFunc); 
+0

我想他想'catCreyz'來存儲被調用的函數 –

1

調用執行功能,你錯過了你的函數返回語句,JavaScript不返回最後一個表達式像其他語言。你必須明確地返回一個值,否則你會得到未定義的值。

如果您想要一個catCreyz的實例,請將call()從表達式中取出。