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

时间:2010-11-12 16:58:35

标签: javascript jquery jslint

我正在使用JSLint来确保我的JavaScript“严格”并且我收到以下错误:

  

期望分配或函数调用,而是看到表达式

在以下代码中:

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

为什么我会收到这样的错误?另外,我正在使用jQuery,如上面的代码所示,以防万一。

4 个答案:

答案 0 :(得分:14)

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

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

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

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

答案 1 :(得分:8)

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

var test = (my_var > 0) ? true : false;

但是,您使用它就像常规的if / then / else语句一样。虽然三元运算符确实执行if / then / else,但它传统上用于受让人。

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

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

答案 2 :(得分:2)

您在一行中使用表达式(使用三元运算符的表达式):您的行由表达式唯一组成。

在许多语言中,这被认为是糟糕的编程习惯,可以使用if语句重写,以使此行更清晰。

答案 3 :(得分:0)

刚问了同样的Q而没有因为某种原因找到这个......

三元组返回一个未被使用的值,因此您不会使用该值来滥用三元结构(即使函数调用是按预期进行的)。