【问题标题】:Javascript conditional return statement (Shorthand if-else statement)Javascript 条件返回语句(简写 if-else 语句)
【发布时间】: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 语句是一个语句。它不是一个表达式,你不能把它当作一个表达式来使用。
  • 我的错! .实际上,我首先尝试使用三元运算符,然后根据需要更改其实现..(更新了我的问题)。它与三元运算符无关,它与返回的简写语法有关。
  • 这是不可能的,但我喜欢这个想法,所以投票赞成:-)。这将有助于我们进一步减少代码。

标签: javascript jquery ternary-operator


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2021-08-31
    • 2012-07-18
    • 2023-02-21
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多