0

我在一个 for 循环中试图将一个数字相加。代码工作正常,但我问自己以下行是否可能有更短的形式:

price = ve.select ? price + ve.price : price;

如果ve.select为真,则价格增加ve.price,如果为假,则价格保持不变。我正在寻找类似这一行的东西(我知道这个代码片段不起作用):

price = ve.select ? price + ve.price;
4

2 回答 2

3

你有几个选择:

  1. 一份if声明

    if (ve.select) {
        price += ve.price;
    }
    

    或者,如果您更喜欢一行:

    if (ve.select) price += ve.price;
    
  2. 您显示的条件运算符版本:

    price = ve.select ? price + ve.price : price;
    

    ...但请注意,当它是虚假的时,它会进行不必要的赋值ve.select(尽管price它可能是一个简单的变量,这不是问题;对于可能是访问器属性的对象属性,它可能很重要)。

  3. 使用&&(逻辑与)运算符:

    ve.select && price += ve.price;
    

    但请注意,这实际上只是if变相的声明。

  4. Tamás Sallai 的回答提供了条件运算符 ( price += ve.select ? ve.price : 0;) 的另一种用法。

于 2020-09-14T11:44:00.633 回答
2

我会反转三元并使用+=

price += ve.select ? ve.price : 0;
于 2020-09-14T12:28:07.380 回答