关于 Boolean 的转换

前端经常喜欢这样写 if else 

if(value)
{
  //do something        
}

javascript 能智能的把任何类型的 value 转换成 boolean 来进行 if 判断 

转换是这样的 

if("" == true) //不是这样哦
{
  console.log("z");
}

if(new Boolean("")) //是这样
{
  console.log("z");
}

 

逻辑是 : 

console.log(new Boolean("") == false);
console.log(new Boolean("a") == true);

console.log(new Boolean({}) == true);

console.log(new Boolean([]) == true);

console.log(new Boolean(0) == false);
console.log(new Boolean(1) == true);
console.log(new Boolean(100) == true);

console.log(new Boolean(undefined) == false);

console.log(new Boolean(null) == false);

console.log(new Boolean(new Date()) == true);

for string : 只有 length = 0 时是 false

for number : 只有 = 0 时是 false 

object, array, datetime 总是 true

undefined null 总是 false

 

除了 if(value) 我们也经常把 2 个不同的类型做对比 

if("z" == true) 

js 会把他们强转成相同的类似来对比. 至于传谁, 我忘记了. 转法是 new String(true);

 

posted @ 2016-12-21 10:06  兴杰  阅读(969)  评论(0编辑  收藏  举报