最近研究一些node.js项目的源代码,发现有类似于a=b||c的表达式,而b和c不只是布尔类型,也有数字或者字符串,上网查之未果,自己试了一下
var b = 1000;
var a = b || 2000;
console.log(a);
打印结果为1000
var b;
var a = b || 2000;
console.log(a);
打印结果为2000
后来查到:
a && b : 将a, b转换为Boolean类型, 再执行逻辑与, true返回b, false返回a
a || b : 将a, b转换为Boolean类型, 再执行逻辑或, true返回a, false返回b
转换规则:
对象为true
非零数字为true
非空字符串为true
其他为false
var b = 1000;
var a = b || 2000;
console.log(a);
打印结果为1000
var b;
var a = b || 2000;
console.log(a);
打印结果为2000
后来查到:
a && b : 将a, b转换为Boolean类型, 再执行逻辑与, true返回b, false返回a
a || b : 将a, b转换为Boolean类型, 再执行逻辑或, true返回a, false返回b
转换规则:
对象为true
非零数字为true
非空字符串为true
其他为false