为什么在使用条件运算符时收到过滤器警告,而使用简单的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;