我不明白以下代码的工作原理。我知道AND和OR之间的区别,但这段代码让我很困惑。
console.log(3 === 3 && 'cow' && console.log(34));
答案 0 :(得分:0)
console.log(3 === 3 && 'cow' && console.log(34));
3 === 3
是true
,因此用于下一个语句
console.log( true && 'cow' && console.log(34));
'cow'
是true
,因为它是非空字符串文字,因此是下一个语句
console.log( true && true && console.log(34));
console.log(34)
执行功能,打印34
,返回undefined
console.log( true && true && undefined);
打印undefined
所以最后在控制台中你会有
34
undefined
答案 1 :(得分:0)
前两个布尔结果3 === 3
和'cow'
都评估为true。这意味着还需要评估最终表达式以查看整个表达式是真还是假。
评估console.log(34)
会产生将34
打印到控制台的副作用,以便首先显示该行。
console.log(34)
没有返回类型,因此其评估结果为undefined
。使用undefined
和任何真实值的结果也是undefined
,因此整个表达式3 === 3 && 'cow' && console.log(34)
的计算结果为undefined
。这将在34
之后的行上打印到控制台。