Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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_Node.js - Fatal编程技术网

JavaScript中的短路评估?

JavaScript中的短路评估?,javascript,node.js,Javascript,Node.js,我不明白下面的代码是如何工作的。我知道AND和OR之间的区别,但这段代码把我弄糊涂了 console.log(3 === 3 && 'cow' && console.log(34)); 3==3为true,因此用于下一个语句 console.log( true && 'cow' && console.log(34)); console.log( true && true && console.l

我不明白下面的代码是如何工作的。我知道AND和OR之间的区别,但这段代码把我弄糊涂了

 console.log(3 === 3 && 'cow' && console.log(34));
3==3
true
,因此用于下一个语句

console.log( true && 'cow' && console.log(34));
console.log( true && true && console.log(34));
'cow'
true
,因为它是一个非空字符串文本,因此下一条语句

console.log( true && 'cow' && console.log(34));
console.log( true && true && console.log(34));
console.log(34)
执行函数,打印
34
,返回
未定义的

console.log( true && true && undefined);
打印未定义的

console.log( true && true && undefined);
最后,在控制台中,您将

34 
undefined

前两个布尔结果,
3==3
'cow'
,计算结果均为true。这意味着还需要对最终表达式求值,以查看整个表达式是真是假

评估
console.log(34)
有一个副作用,就是将
34
打印到控制台上,这样第一行就会出现


console.log(34)
没有返回类型,因此其计算结果为
未定义
。使用
undefined
与任何truthy值进行anding的结果也是
undefined
,因此整个表达式
3==3&&“cow”&&console.log(34)
计算结果为
undefined
。这是在
34

之后打印到控制台的,该代码中没有发生短路。哪一部分让您感到困惑?它是否输出了一些你不知道的东西?如果是这样,您希望它输出什么呢?
3===3
的结果是
true
。。。
'cow'
的结果是
truthy
。。。
console.log(34)
的结果是
未定义的
-谜团是什么?为什么是第二个&为什么不只是console.log。。。。。您在哪里找到它的?为什么第二个&&为什么不只是console.log,因为语句是从左到右求值的