我正在使用JSLint来确保我的 JavaScript 是“严格的”并且我收到以下错误:
期望一个赋值或函数调用,而是看到一个表达式
在以下代码上:
(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);
任何想法为什么我会收到这样的错误?另外,我正在使用上面代码中的 jQuery,以防万一。
我正在使用JSLint来确保我的 JavaScript 是“严格的”并且我收到以下错误:
期望一个赋值或函数调用,而是看到一个表达式
在以下代码上:
(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);
任何想法为什么我会收到这样的错误?另外,我正在使用上面代码中的 jQuery,以防万一。
我的猜测是 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);
我相信这是因为三元运算符评估表达式并返回一个预期分配的值。例如:
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');
您在单行中使用表达式(准确地说是使用三元运算符的表达式):您的行由一个表达式组成。
这在许多语言中被认为是糟糕的编程实践,并且可以使用if
语句重写以使该行更清晰。
只是问了同一个Q,但由于某种原因没有找到这个...
三元返回一个未使用的值,因此您通过不使用该值来滥用三元结构(即使函数调用是按预期进行的)。