【问题标题】:Ternary operator displays error in JSHint - Expected an assignment or function call and instead saw an expression三元运算符在 JSHint 中显示错误 - 需要赋值或函数调用,但看到的是表达式
【发布时间】:2013-08-06 06:26:58
【问题描述】:

我的 JS 中有一个三元运算符 dir === 'next' ? ++$currentSlide : --$currentSlide; 用于递增递减整数。当我在 grunt JSHint 中运行我的脚本时,将这一行突出显示为 Expected an assignment or function call and instead saw an expression.

谁能告诉我这个问题在哪里?我应该以不同的方式设置我的条件吗?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    将三元运算符写入if else condition

    之前:

    (pbook.id === book.id ? book.shelf = pbook.shelf : "none");
    

    之后:

                         if(pbook.id === book.id){
                            return book.shelf = pbook.shelf
                          } else {
                            return "none"
                          };
    

    【讨论】:

      【解决方案2】:

      一般来说,用于禁用“预期的赋值或函数调用,而是看到一个表达式。”警告,你可以这样做 /* jshint expr: true */

      【讨论】:

        【解决方案3】:

        您将条件运算符误用为if 语句,这就是您收到该注释的原因。代码中真正的工作是作为表达式的副作用完成的,而忽略表达式的结果。

        作为真正的if 声明,应该是:

        if (dir === 'next') {
          ++$currentSlide;
        } else {
          --$currentSlide;
        }
        

        如果将条件运算符用作实际表达式,则可以使用它:

        $currentSlide += dir === 'next' ? 1 : -1;
        

        【讨论】:

        • 不寒而栗在后者。
        • 对于++x; 单独一行,您不会收到相同的警告吗?
        • @DaveNewton: $currentSlide += dir === 'next' || -1; :-)
        • @sje397 JSLint 会抱怨 ++x,但更合理的 JSHint 并不在乎。
        • 或者“dir”可以是一个函数而不是一个标志。
        【解决方案4】:

        试试这个语法:

        $currentSlide = (dir === 'next' ? $currentSlide+1 : $currentSlide-1);
        

        【讨论】:

          【解决方案5】:

          这样写能通过吗?

          $currentSlide = (dir === 'next' ? $currentSlide + 1 : $currentSlide - 1);
          

          Linter 和 hinter 通常不喜欢 in/decrements,因为它们对错误很敏感。

          【讨论】:

            猜你喜欢
            • 2012-02-23
            • 1970-01-01
            • 2015-05-22
            • 2020-12-21
            • 2023-03-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多