为什么document.writeln("a" || "b")
打印a
而不是true
?
document.writeln("a" && "b")
打印b
document.writeln(1==1 && 1!=1)
打印false
document.writeln(1!=1 && 'b')
打印false
document.writeln(1==1 && 'b')
打印b
是否评估内部部分并返回&&
的最后一个值,以及||
的第一个真值?
答案 0 :(得分:9)
||
和&&
并不总是返回布尔值。 ||
评估第一个参数。如果它将评估为true,则返回该参数。否则,它返回第二个参数(无条件)。
&&
评估第一个参数。如果它将评估为true,则返回第二个参数(无条件地)。否则返回第一个参数。
这可以让你做一些整洁的事情,如:
function foo(optionalVar) {
var x = optionalVar || 4;
}
foo(10); //uses 10, since it is passed in;
foo(); //uses 4, the default value, since optionalVar=undefined, which is false
答案 1 :(得分:2)
它的操作顺序和真值表。
If(a OR b) : if a is true than the whole statement is true
If(a AND b): if a is true, doesnt mean that the statement is true,
but if b is true as well than the statement is true
|| is the same as OR
&& is the same as AND
更新
因此,在函数式编程中,它返回第一个 true
值。字符串被视为true
因此它将返回字符串。
Pointy指出:
应注意,空字符串不 true
。 (当然,这是false
)