关于 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);

原文地址:https://www.cnblogs.com/keatkeat/p/6206516.html