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 Object,將要判斷的值已建構子方式傳入boolean object,如果傳入的參數是0, -0, null, false, NaN, undefined, 或者空字符串 (""),會得到的boolean Object的boolean值為false,如果傳入的參數為其他任何值,包括任何對象或者字符串"false",都會建立一個值為true的Boolean Object
  因此,如果是要判斷傳入值是否為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值是否為false
var 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]) 

results matching ""

    No results matching ""