我使用JSLint来确保我的JavaScript是“严格的”,并且我得到了以下错误:
需要一个赋值或函数调用,但却看到了一个表达式
在以下代码中:
(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);你知道为什么我会收到这样的错误吗?此外,我还使用了上面代码中所示的jQuery,以防有什么不同。
发布于 2010-11-13 01:07:46
我的猜测是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);发布于 2010-11-13 01:04:08
我相信这是因为三元运算符计算表达式并返回一个预期赋值的值。例如:
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');发布于 2010-11-13 01:04:58
您在一行中使用了一个表达式(准确地说,是一个使用三元运算符的表达式):您的行由一个表达式唯一地组成。
在许多语言中,这被认为是糟糕的编程实践,可以使用if语句重写,以使这一行更清晰。
https://stackoverflow.com/questions/4167113
复制相似问题