2013-05-17 200 views
4

在目前的Chrome,如果我這樣做:JavaScript'不是函數'與'期望函數'?

var i = 'foo'; 
i(); 

我得到一個錯誤'string is not a function'。我得到類似的錯誤,如果i是一個數字,不確定等

然而,從一些現實生活中,更復雜的代碼,有時我看到一個不同錯誤:

'expected function: function(){}'

我想弄清楚這兩個錯誤究竟有什麼不同,或者從另一個角度來看,如何編寫一個觸發'期望函數'錯誤的最小代碼片段。

我試着擺弄回調,並調用/應用,但沒有一個觸發這個。任何人都可以解釋如何重現此錯誤?

+2

您是否在同一瀏覽器中同時收到兩條消息?我不會感到驚訝,如果它只是由於瀏覽器的不同而出現相同錯誤的消息 – Ian

+2

您使用的是代碼庫嗎?錯誤可能是來自那裏的自定義錯誤。 '拋出新的錯誤(「期望的函數:函數(){}」)' – 2013-05-17 18:54:21

+1

例如:http://stackoverflow.com/questions/6697947/javascript-error-function-is-expected - 看起來像「預期」的消息是舊的IE也許? – Ian

回答

0

沒有規定應該是什麼錯誤信息。因此每個供應商都實現它自己的。統一這個的唯一方法是驗證你的數據並拋出你期望的錯誤。

var i = 'foo'; 

if (!$.isFunction(i)){ 
    throw 'expected function: function(){}'; 
}