【问题标题】:Turning a ternary operator into if else statement on return在返回时将三元运算符转换为 if else 语句
【发布时间】:2016-05-22 23:42:01
【问题描述】:

我目前使用的三元运算符如下:

return $scope.productWithEAN(EAN).then(function(product) {
   return (product) ? product : $scope.createProduct(productID, name);
  });
});

我现在想指向一个函数 if return (product) ? product

我认为最好使用 if else 语句来完成。我已经创建了这个,但是我得到了一个意外的返回令牌:

return $scope.productWithEAN(EAN).then(function(product) {
  if (return (product) ? product) {
      console.log("product is here");
      //$scope.checkOrUpdateProduct;
    },else {
      console.log("product not here");
      //$scope.createProduct(productID, name);
    };
  });
});

有更好的方法吗?

【问题讨论】:

  • 您的新代码有一些语法错误:您现在使用的三元运算符只有两个操作数(它必须有三个),您的 if 条件中有一个 return,并且您在您的else 之前有一个逗号。
  • 你不能那样做。 return 语句可以包含表达式,但if ... else 不是表达式;这是一种不同的语句类型。同样,您不能在 if 需要表达式的地方嵌入 return
  • 语句可能是:return product || $scope.createProduct(productID, name);,这可能比 if..else 序列更清晰。
  • 谢谢@Pointy - 我认为还需要阅读更多内容!!!我以为是这样的东西破坏了一切!
  • 完全一样:return a() || b()。如果a()的返回值为真,则返回,否则返回b()的返回值(不管是否为真)。

标签: javascript


【解决方案1】:

您不能使用if (return ...)。如果你想将它重写为 if else 语句,你可以使用这个:

return $scope.productWithEAN(EAN).then(function(product) {
    if (product) {
        console.log("product is here");
        return $scope.checkOrUpdateProduct();
    } 
    console.log("product not here");
    return $scope.createProduct(productID, name);
});

请注意,不需要if else,如果if 条件满足,则永远不会到达else 部分,因为我们returnif 中。所以你可以只在if 中使用return,之后就不需要else

【讨论】:

  • 我强烈建议您这样做。换取较小代码的可读性并不是一个好的长期策略。 Michael 的代码更容易阅读和理解。
  • 只是为了让我更好地理解,(产品)是否期望布尔返回,即:这里/不是这里?
  • 布尔值没关系。如果它持有某些东西(无论是未定义的,null,false),if 条件将命中@MrT
  • @Michael 伟大的。感谢您确认。
  • @Michael 我观察到如果没有产品,那么运行 console.log("product not here"); return $scope.createProduct(productID, name); 的 else 语句会是什么(这会将一个条目写入数据库)。但是,如果存在产品,那么它会同时运行 if 语句和 console.log("product not here"); return $scope.createProduct(productID, name); 代码?
猜你喜欢
  • 2021-07-09
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2017-05-30
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多