为什么这个基于短路评估的 if 语句不起作用
Why does this if-statement based on short-circuited evaluation not work?
在fun
函数中,如果布尔表达式为真,我想返回 1。
function fun() {
(1 == 1) && return 1;
}
alert(fun());
当然,我可以轻松地用if (1 == 1) return 1
做到这一点.但是,我想知道为什么上面的代码不起作用。它会在 Chrome 的控制台中触发"未捕获的语法错误:意外的令牌返回"错误。
return 1
不应该只在(1 == 1)
是真的时才运行吗?为什么这不起作用?
它不起作用,因为&&
运算符的两个操作数都需要expressions
。 例如,
expr1 && expr2
然而,return
语句不是(从语法上讲)expressions
。
有关一个很棒的解释,请参阅 jmar777 的答案,无论如何,您都可以通过以下方式实现您的计划。我只是反过来了:
function fun() {
return null || 1 == 1;
}
alert(fun());
JavaScript 不是 bash shell 脚本。 你没有if
. JavaScript也不是C。 ==
会自动投射,但===
不会,这使得===
几乎在任何情况下都是更明智的选择。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- 在Javascript中将一个值和字符串数组转换为if语句
- Dropbox oauth认证的IF语句的第二部分是't已触发
- MVC Jquery-按钮点击-获取if语句错误
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- If语句发布或操作员发布
- 清除函数中if语句内部不起作用的间隔
- 使用if语句重新循环