javascript - 语法错误 : ES6 Switch case inside If else ternary Operator

标签 javascript

我的这段代码有语法错误,我的 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;
}

关于javascript - 语法错误 : ES6 Switch case inside If else ternary Operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34219484/

相关文章:

javascript - dropzone.js php 上传不起作用

javascript - 以编程方式在 javascript 和 onclick 事件中添加单选项目

循环内的 JavaScript 闭包——简单实用的示例

javascript - 为什么执行 Object.create(null) 之后将其原型(prototype)设置为 Object.prototype 将不允许执行 Object.prototype 中的方法

JavaScript 淡入/淡出问题

javascript - 在 Google Chart 中自定义 onmouseover 事件

javascript - 所有人共享的First Load JS在next.js中相当重

javascript - 提交表单并在 <a> 单击时调用 Ajax

javascript - 努力使用 for 循环向对象添加属性

javascript - 日期选择选项未验证 onsubmit