12

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

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

4

5 回答 5

20

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

作为一个真实的if陈述,它将是:

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

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

$currentSlide += dir === 'next' ? 1 : -1;
于 2013-08-05T14:00:10.917 回答
8

通常,用于禁用“预期分配或函数调用,而是看到一个表达式。” 警告,你可以这样做 /* jshint expr: true */

于 2013-11-03T00:07:45.707 回答
3

这样写能通过吗?

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

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

于 2013-08-05T13:57:00.187 回答
0

试试这个语法:

$currentSlide = (dir === 'next' ? $currentSlide+1 : $currentSlide-1);
于 2013-08-05T13:58:39.847 回答
0

使三元运算符 in toif else condition

前:

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

后:

                     if(pbook.id === book.id){
                        return book.shelf = pbook.shelf
                      } else {
                        return "none"
                      };
于 2018-12-12T10:45:54.263 回答