Javascript中的逻辑运算符和/或短马戏团
我仍然处于JS的基本阶段,遇到了一个我最近结巴的练习,下面是代码:Javascript中的逻辑运算符和/或短马戏团,javascript,logical-operators,short-circuit-evaluation,Javascript,Logical Operators,Short Circuit Evaluation,我仍然处于JS的基本阶段,遇到了一个我最近结巴的练习,下面是代码: alert(alert(0) || alert(2)); 结果返回为0,然后返回2且未定义 我理解OR如何首先查找truthy值,如果没有找到,则返回最后一个值,但是在上面的代码中,它不应该在2之后停止计算吗?为什么还有未定义的返回?这是虚假的价值观 结果返回为0,然后返回2且未定义 听起来您错误地认为显示的值也是从alert()函数返回的。事实并非如此警报()始终返回未定义的。第一个警报显示0,但不会返回0。相反,alert
alert(alert(0) || alert(2));
结果返回为0,然后返回2且未定义
我理解OR如何首先查找truthy值,如果没有找到,则返回最后一个值,但是在上面的代码中,它不应该在2之后停止计算吗?为什么还有未定义的返回?这是虚假的价值观
结果返回为0,然后返回2且未定义
听起来您错误地认为显示的值也是从
alert()
函数返回的。事实并非如此<代码>警报()始终返回未定义的。第一个警报显示0
,但不会返回0
。相反,alert()
函数返回值undefined
。由于这是“falsey”,因此也会调用警报(2)
,该警报显示a2
,然后返回未定义的,这是|
运算符的最终结果。然后此“未定义”由最终警报显示。警报本身没有返回值,因此它只生成未定义的。您评估undefined | | undefined
消息弹出窗口是调用警报的副作用,它与这些表达式返回的值无关。