Javascript 条件返回语句(简写 if-else 语句)
Posted
技术标签:
【中文标题】Javascript 条件返回语句(简写 if-else 语句)【英文标题】:Javascript conditional return statement (Shorthand if-else statement) 【发布时间】:2015-03-22 04:31:49 【问题描述】:在 javascript 中编写简写 if-else 时,出现语法错误。这是我的代码:
data && data.cod == '404' && return;
虽然当我使用正常的 if-else 时效果很好,如下所示:
if(data && data.cod == '404') return;
var temp = data && data.main && data.main.temp;
//Code here...
我知道,如果我使用像 return (data && data.cod == '404')?'true':'false';
这样的三元运算符,它工作正常,但我正在寻找有条件的“返回”,否则继续进一步。
【问题讨论】:
这里是什么三元???data && data.cod == '404' && return;
问题有点不清楚......
return
语句是一个语句。它不是一个表达式,你不能把它当作一个表达式来使用。
我的错! .实际上,我首先尝试使用三元运算符,然后根据需要更改其实现..(更新了我的问题)。它与三元运算符无关,它与返回的简写语法有关。
这是不可能的,但我喜欢这个想法,所以投票赞成:-)。这将有助于我们进一步减少代码。
【参考方案1】:
你试图做的是违反语法规则。
return
关键字只能用在return statement 的开头
在data && data.cod == '404' && <something>
中,您可以在<something>
中放置的唯一内容是表达式,而不是语句。你不能把return
放在那里。
要有条件地返回,请使用正确的if
语句:
if(data && data.cod == '404')
return;
我建议不要使用像你试图做的那样的快捷方式,作为一种“聪明”的方式来执行具有副作用的代码。条件运算符和布尔运算符的目的是产生一个值:
好:
var value = condition ? valueWhenTrue : valueWhenFalse;
不好:
condition ? doSomething() : doSomethingElse();
您不应该这样做,即使语言允许您这样做。这不是条件运算符的用途,它会让试图理解您的代码的人感到困惑。
为此使用正确的if
语句。这就是它的用途:
if (condition)
doSomething();
else
doSomethingElse();
如果你真的想,你可以把它放在一行:
if (condition) doSomething(); else doSomethingElse();
【讨论】:
优秀的答案!像这样的事情是 Douglas Crockford 写JSLint 的原因之一,也是它如此严格的原因之一。他想阻止自己尝试编写“聪明”的代码。编写“聪明”的代码通常会导致引入难以调试的错误。【参考方案2】:那么就在 if 中写返回
var result = (data && data.cod == '404')
if (result)
return result;
else
//otherwise
【讨论】:
以上是关于Javascript 条件返回语句(简写 if-else 语句)的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 简写 if 语句,没有 else 部分