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