[英]Can we write following if else statement with Ternary operator (Es6)?
[英]Syntax Error: ES6 Switch case inside If else ternary Operator
我有这个代码的语法错误,我的webpack编译器在我的三元运算符中的switch case
指出我的错误
export function computeShipping(weight, location) {
return (dispatch, getState) => {
const state = getState();
const { shippingMatrix } = state.cart;
return shippingMatrix != null
? switch(location) {
case 'provincial':
if ( weight <= 1) {
return shippingMatrix.provincial[0].value;
}
}
: null
}
}
谁能帮我?
建议将不胜感激。 :)
那么编译器是完全正确的。 switch
语句是一个语句 ,不能作为期望表达式的三元运算符的操作数出现。
鉴于此,我无法确切地告诉您对此代码的期望,但我认为if
条件:
export function computeShipping(weight, location) {
return (dispatch, getState) => {
const {cart: {shippingMatrix}} = getState();
if (shippingMatrix != null && location === 'provincial' && weight <= 1)
return shippingMatrix.provincial[0].value;
else
return null;
}
}
当然,你可以把它变成三元组:
…
return (shippingMatrix != null && location === 'provincial' && weight <= 1)
? shippingMatrix.provincial[0].value;
: null;
或者甚至将条件的静态部分移动到闭包之外:
export function computeShipping(weight, location) {
return (location === 'provincial' && weight <= 1)
? (dispatch, getState) => {
const {cart: {shippingMatrix}} = getState();
return shippingMatrix && shippingMatrix.provincial[0].value;
}
: (dispatch, getState) => null;
}
您不能在表达式中使用语句(如if / switch / for)(如三元表达式)。 同样的方式你不能说if(for(..){..})
或if(switch(..){..})
。
区分的最简单方法是变量赋值。 你可以说var x = /*expression*/
但你不能说var x = for(...)
。 想想可以有价值的东西和不能有价值的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.