2011-12-21 40 views
1
var x = 1; 
if (function f(){}) { 
    x += typeof f; 
} 
x; //"1number" 

Typeof f必須是一個函數,它被附加到x和值應該是「1function」typeof f數字怎麼樣?函數作爲條件和類型的引用

+0

http://jsfiddle.net/KfrVg/你在這裏有什麼? 1NUMBER? – 2011-12-21 10:12:26

回答

4

我得到"1undefined",也許你有另一個變量f這是一個數字。

函數表達式的名稱(或標識符)只能在函數內部進行訪問。您的代碼不會創建公共符號f

specification

的標識在FunctionExpression可以從FunctionExpression的函數體內被引用到允許函數遞歸調用自身。然而,與在FunctionDeclaration,在FunctionExpression無法從引用,不影響封閉FunctionExpression範圍的標識符

其中FunctionExpression定義爲:

FunctionExpression功能標識符選擇FormalParameterList選擇){函數體}

+0

我在Firefox和Chrome上試過這個,我也得到了1undefined ...但是邏輯上答案應該是1function? – 2011-12-21 10:18:56

+1

@Vikram:如果'f'可以在調用上下文中訪問,那麼是的,它將是'1function'。只需移動條件以外的表達式,以便將它作爲函數聲明進行計算並使用'if(f)',您將看到。 – 2011-12-21 10:19:52

相關問題