2014-06-20 70 views
7

我已經使用typeof foo !== 'undefined'來測試JavaScript函數的可選參數布爾參數,但如果我想這個值是每次truefalse,什麼是最簡單的或最快或最徹底辦法?這似乎是它可以比這更簡單:設置默認值在JavaScript函數

function logBool(x) { 
    x = typeof x !== 'undefined' && x ? true : false; 
    console.log(x); 
} 

var a, b = false, c = true; 
logBool(a); // false 
logBool(b); // false 
logBool(c); // true 

回答

15

你可以跳過三元和評估「不是不是X」,如!!x

如果x未定義,!x爲真,那麼!!x將再次變爲false。如果x爲真,則!x爲假,因此!!x爲真。

function logBool(x) { 
    x = !!x; 
    console.log(x); 
} 

var a, b = false, c = true; 
logBool(a); // false 
logBool(b); // false 
logBool(c); // true 
+0

啊啊完美,正是我在找的,謝謝。 – jrode

+0

有人請保護這個答案:) –