Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我会得到以下不同的答案_Javascript - Fatal编程技术网

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

Javascript 为什么我会得到以下不同的答案,javascript,Javascript,我得到以下代码的不同输出。请告诉我区别 var y = 1; var c = "anything"; var d = 5; console.log(y == 1 && "anything"); // Output is anything console.log( "anything" && y == 1 ); // Outpu

我得到以下代码的不同输出。请告诉我区别

        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

与其他一些语言相比,
&&
|
在JavaScript中的功能惊人地强大:它们不一定返回布尔值

&&
计算其第一个操作数,如果是falsy*,则将其用作返回值;如果第一个操作数求值为truthy*,
&&
求值第二个操作数并将其用作结果值。在你的
y==1&&“anything”
中,由于
y==1
true
(当然是truthy),因此结果是计算
“anything”
(即
“anything”
)的结果。在您的
“anything”&&y==1
“anything”
是真实的,因此结果是计算
y==1
(即
true
)的结果

|
的工作方式类似:它计算其第一个操作数,如果是真的,则将其用作结果值;否则,
|
计算其第二个操作数,并将其用作结果值


*法尔西和特鲁西:

falsy—当用作布尔值时强制为
false
的值。falsy值是:
0
NaN
null
未定义
,当然还有
false
。(在浏览器上,
document.all
也是虚假的,原因很复杂。如果你真的很好奇,我会在我的书《JavaScript:新玩具》的第17章中介绍它。如果你感兴趣,我个人资料中的链接。)


truthy-当用作布尔值时强制为
true
。任何非伪值都是真值,包括
“0”
(引号中为零)、
“false”
(引号中为假)、空函数、空数组和空对象。

&&
运算符将返回最后一个真值或假值。由于
“anything”
为true,第一个表达式将返回
“anything”
。在第二个表达式中,将首先计算
y==1
,结果为
true
,因此返回该值。由于执行不同的操作,您将获得不同的输出。“差异”是指执行操作的顺序。@deceze:可能有重复的地方,但该问题的答案不能回答该问题。这将有帮助:您还可以标记文档: