2013-01-25 95 views
0
var foo; 

console.log(typeof foo); //"undefined" 

if(typeof foo === 'undefined') 
    console.log(1); 

if(!foo) 
    console.log(2); 

在我的例子上文中,控制檯將記錄都爲「1」和「2」,由於undefined計算爲false。同樣的事情會發生的nullNaN""(空字符串)等使用評估的變量值,而不是實際類型

是不是更常見的是使用typeof操作和比較字符串值,而不是使用評估布爾值?除了可讀性還有什麼區別嗎?任何優點和缺點?

+0

第二種方式會崩潰,如果變量尚未被聲明。 – nnnnnn

回答

4

沒有銀彈,它完全取決於你的目標。

如果你需要知道變量是「falsy」 - 你用if (!var),如果你需要準確地知道它的null0,空字符串或任何 - 您使用if (var === null)

+0

那麼'typeof'操作符呢? 'typeof foo ==='null'' vs'foo === null' – Antony

+0

@Antony foo的類型永遠不會是「null」,只是「未定義」或「對象」等。使用typeof'的原因是'==='是它允許你檢查未聲明的變量。如果沒有測試變量,'test === undefined'將會拋出一個ReferenceError,而'typeof test'將返回「undefined」。 –

+0

@Matt感謝您的信息。 – Antony

相關問題