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 部分

pythonif判断条件简写

JavaScript条件语句-5

简写 if/else 语句 Javascript

如何使用带有select onchange的条件语句在javascript函数中返回html代码

如果给定条件为假,如何编写注释/方面以不输入方法但返回 null?