我的 JS 中有一个三元运算符dir === 'next' ? ++$currentSlide : --$currentSlide;
,用于递增递减整数。当我在 grunt JSHint 中运行我的脚本时,将这一行突出显示为Expected an assignment or function call and instead saw an expression.
谁能告诉我这个问题在哪里?我应该以不同的方式设置我的条件吗?
我的 JS 中有一个三元运算符dir === 'next' ? ++$currentSlide : --$currentSlide;
,用于递增递减整数。当我在 grunt JSHint 中运行我的脚本时,将这一行突出显示为Expected an assignment or function call and instead saw an expression.
谁能告诉我这个问题在哪里?我应该以不同的方式设置我的条件吗?
您将条件运算符用作if
语句,这就是您收到该注释的原因。代码中的实际工作是作为表达式的副作用完成的,表达式的结果被忽略。
作为一个真实的if
陈述,它将是:
if (dir === 'next') {
++$currentSlide;
} else {
--$currentSlide;
}
如果将条件运算符用作实际表达式,则可以使用它:
$currentSlide += dir === 'next' ? 1 : -1;
通常,用于禁用“预期分配或函数调用,而是看到一个表达式。” 警告,你可以这样做 /* jshint expr: true */
这样写能通过吗?
$currentSlide = (dir === 'next' ? $currentSlide + 1 : $currentSlide - 1);
Linter 和 hinter 通常不喜欢 in/decrements,因为它们对 bug 很敏感。
试试这个语法:
$currentSlide = (dir === 'next' ? $currentSlide+1 : $currentSlide-1);
使三元运算符 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"
};