为什么我会得到以下不同的答案

时间:2017-04-03 11:58:31

标签: javascript

我为以下代码获得了不同的输出。请告诉我差异

        var y = 1;
        var c = "anything";
        var d = 5;
        console.log(y == 1 && "anything"); // Output is anything
        console.log( "anything" && y == 1 ); // Output is true

1 个答案:

答案 0 :(得分:2)

与其他语言相比,JavaScript中的{p> &&|| 非常强大:它们不一定会返回布尔值。

&&计算它的第一个操作数,如果那是假的*,则使用它作为返回值;如果第一个操作数evalutes truthy *,&&计算其第二个操作数并将其用作结果值。在y == 1 && "anything"中,由于y == 1true(当然,这是真实的),结果是评估"anything"的结果("anything" )。在"anything" && y == 1中,"anything"是真实的,因此结果是评估y == 1true)的结果。

||以类似的方式工作:它评估它的第一个操作数,如果这是真实的,则使用它作为结果值;否则,||计算其第二个操作数使用其作为结果值。

* falsy and truthy:

falsy - 用作布尔值时强制为false的值。虚假值包括:""0NaNnullundefined,当然还有false

truthy - 用作布尔值时强制为true的值。任何非虚假的价值都是真实的,包括。 "0"(引号为零),"false"(引号中为false),空函数,空数组和空对象。