Boo who
判斷資料型態是否為boolean如標題所示,判斷一個值是否是基本boolean類型,並返回 true 或 false
function boo(bool) {
// What is the new fad diet for ghost developers? The Boolean.
if(bool === true || bool === false)
var tf = new Boolean(bool);
var jud = Boolean(tf);
return jud;
}
boo(null);
boo([1, 2, 3]);
boo("false");
Solution:
因此,如果是要判斷傳入值是否為boolean值,則條件式為當傳入值為true or false 時,則建立boolean object;否則不傳入,最後在都傳入一個boolean object中,在這裡因為值為true or false的參數已經傳入2次的boolean函數,其結果一定會true,其他的值因為只有使用boolean object來創建boolean 資料型態,所以值為false
需要注意的是,任何值為 undefined或者 null的對象, 包括值為false的Boolean對象, 在條件語句中,其值都將作為true來判斷.例如,下面的if 語句中,if就將對象x看作是true:
var x = new Boolean(false);
if (x) {
// . . . 這裏的代碼仍會被執行
//code at home will be executed.
}
//如果是原始的boolean型態的資料,則在條件子句裡依然為false,故不會執行
var x = false;
if (x) {
// . . . 這裏的代碼不會被執行
//code at here won't be executed.
}
不要用new 來建立Boolean對象的方法來將一個非布爾值轉化成布爾值. 直接使用Boolean函數才是正確的:
var x = Boolean(expression); // 這樣用
var x = new Boolean(expression); // 而不要這樣!
如果boolean Object的參數為一個boolean object時,建立的boolean object值一定為true,不管傳入的boolean object值是否為falsevar myFalse = new Boolean(false); // 初始化值為false
var g = new Boolean(myFalse); // 初始化值為true(雖然傳入的參數為false的boolean Object)
var myString = new String("Hello"); // string 對象
var s = new Boolean(myString); // 初始化值為true
P.S. / Reference: Boolean([value])