2013-07-19 12 views
2

我使用一些代碼來跳過清除Safari中的控制檯,因爲此功能未在Safari「if(console.clear)」的內部如何評估爲真?

if (console.clear) { console.clear() }; 

定義,但如何「console.clear」曾經評價爲真?輸出看起來不像真的。

console.log(console.clear); 

// undefined        Safari 
// function()        FF 
// function clear() { [native code] }  Opera, Chrome, IE 
+2

console.clear沒有括號返回一個函數對象,這是* truthy * –

回答

5

如果目標不是其中之一,它返回true在if語句:

'', (+-)0, null, undefined, NaN, false 
+0

-0和NaN也是麻煩的。哦,本身就是假的。 ;) –

+0

你忘了boolean'false' –

+1

@AlexK。謝謝,這很有趣:D – karaxuna

4

所有對象都被認爲是真實的,函數是JavaScript中的對象。如果函數未定義,它將返回未定義的,這是虛假的。

還有一件事:如果console本身不存在(在沒有開發工具的情況下,IE < = 9的情況下),您的代碼將拋出錯誤。一個更安全的考驗將是:

if (console && console.clear) { console.clear() };