JavaScript:错误 - "预期分配或函数调用,而是看到一个表达式"?

Hea*_*erK 16 javascript jquery jslint

我正在使用JSLint来确保我的JavaScript是"严格的",我收到以下错误:

期望一个赋值或函数调用,而是看到一个表达式

在以下代码中:

(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);
Run Code Online (Sandbox Code Playgroud)

任何想法为什么我会收到这样的错误?此外,我正在使用jQuery,如上面的代码所示,以防有所作为.

Mar*_*sey 14

我的猜测是JSLint不满意,因为你正在使用三元运算符,并且你没有对值进行任何操作.将其重构为等价物:

if (my_var > 0 ) {
  $("#abc").html(my_array.join(''));
} else {
  $("#abc").html('<h2>Hello ' + persons_name);
}
Run Code Online (Sandbox Code Playgroud)

将消除错误.如果由于某种原因你真的喜欢使用三元运算符,那么使用它的"正确"方法是:

$("#abc").html((my_var > 0) ? my_array.join('') : '<h2>Hello ' + persons_name);
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 8

我相信这是因为三元运算符计算表达式并返回一个预期分配的值.例如:

var test = (my_var > 0) ? true : false;
Run Code Online (Sandbox Code Playgroud)

但是,您正在使用它像常规的if/then/else语句.虽然三元运算符确实执行if/then/else,但它传统上用于assignents.

编辑:作为附录:这句话对你有意义吗?

var foo = 1;
(my_var > 0) ? true : false;
console.log('hello world');
Run Code Online (Sandbox Code Playgroud)