为什么document.writeln(“a”||“b”)打印“a”而不是“true”?

时间:2011-03-22 18:28:39

标签: javascript

为什么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

是否评估内部部分并返回&&的最后一个值,以及||的第一个真值?

2 个答案:

答案 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