逻辑运算符Javascript && [重复]

Posted

技术标签:

【中文标题】逻辑运算符Javascript && [重复]【英文标题】:Logical operators Javascript && [duplicate] 【发布时间】:2020-10-02 10:41:46 【问题描述】:

当我运行此代码时,首先显示 1,然后显示未定义。但是还是没看懂。

alert(alert(1) && alert(2));

这里有一些解释:

对警报的调用返回未定义(它只是显示一条消息,因此没有有意义的返回)。

因此,&& 计算左操作数(输出 1)并立即停止,因为 undefined 是一个假值。而&& 寻找一个假值并返回它,这样就完成了。

【问题讨论】:

那么你的问题是什么?你似乎已经知道发生了什么。 "&&|| 运算符产生的值不一定是 Boolean 类型。产生的值将始终是两者之一的值操作数表达式。" (Source) 您的预期结果是什么? 【参考方案1】:

alert 不返回任何内容

所以alert(1) 运行,因为警报不返回任何未定义的内容。结果你有alert(undefined && alert(2))alert(2) 不会执行,因为左部分需要真实执行。未定义是错误的。计算结果为alert(undefined)

因此,第一个警报的警报为 1,而外部警报的警报未定义,并且永远不会执行 alert(2)。

以不那么混乱的方式编写代码

var action = alert(1) && alert(2) // only runs alert(1)
console.log(action) // shows variable is undefined
alert(action) // alerts undefined

【讨论】:

我说我不明白,首先显示“1”,然后显示“未定义”。我不明白它为什么以及如何工作? 我不知道该怎么解释。你了解 && 的工作原理吗?你期待它是什么? 对于每个操作数,将其转换为布尔值。如果结果为假,则停止并返回该操作数的原始值。如果所有操作数都已被评估(即所有操作数都是真实的),则返回最后一个操作数。是的,我完全理解上面的意思。它首先是未定义的。这是假的。但它运行警报 1,然后显示我未定义。我不明白为什么它会这样运行。我只是想在逻辑上抓住主要思想 将代码添加到末尾。我认为您没有掌握外部警报运行的事实。评估警报中的代码,然后运行警报。该代码实际上没有任何实际意义,因此令人困惑。

以上是关于逻辑运算符Javascript && [重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript中逻辑运算符总结

javascript逻辑运算符“||”和“&&”

有人能解释一下为啥“运算符优先级”适用于 javaScript 中的“||”、“&&”等逻辑运算符吗

JavaScript 逻辑与(&&) 与 逻辑或(||) 的逻辑运算规则理解

javaScript 中的布尔运算符 && 和 ||

JavaScript逻辑运算符(操作数运算符)