为什么不能使用条件运算符来有条件地增加这样的属性?



为什么在使用条件运算符时收到过滤器警告,而使用简单的if语句却没有?

不正确
switch (type) {
case 'add':
array[index]['Quantity'] += 1;
// Error when using `++array[index]['Quantity']`

break;
case 'remove':
array[index]['Quantity'] > 0 ? array[index]['Quantity'] -= 1 : null;
// Error: Expected an assignment or function call and instead saw an expression (no-unused-expressions)

break;
default:
break;
}

可能的方式
switch (type) {
case 'add':
array[index]['Quantity'] += 1;

break;

case 'remove':
if (array[index]['Quantity'] > 0) {
--array[index]['Quantity'];
}

break;

default:
break;
}

我想这就是问题所在:

array[index]['Quantity'] > 0 ? array[index]['Quantity']-=1 : 0;  // Error
break;

当三进制条件为真时,返回一个表达式(array[index]['Quantity']-=1),而您应该返回一个值。

试试这个:

array[index]['Quantity'] = array[index]['Quantity'] > 0 ? array[index]['Quantity'] - 1 : 0;
break;

但我仍然认为这是最好的解决方案:

if (array[index]['Quantity'] > 0)
array[index]['Quantity']--;
break;

相关内容

  • 没有找到相关文章

最新更新