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

Posted

技术标签:

【中文标题】JavaScript:错误 - “期望一个赋值或函数调用,而是看到一个表达式”?【英文标题】:JavaScript: Error - "Expected an assignment or function call and instead saw an expression"? 【发布时间】:2011-05-09 04:51:24 【问题描述】:

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

期待一个赋值或函数调用,却看到了一个表达式

关于以下代码:

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

任何想法为什么我会收到这样的错误?另外,我正在使用上面代码中的 jQuery,以防万一。

【问题讨论】:

【参考方案1】:

只是问了同一个问题,但由于某种原因没有找到这个问题......

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

【讨论】:

【参考方案2】:

我的猜测是 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);

【讨论】:

我希望有一个轻松的选项来使用按位 && 作为布尔类型检查【参考方案3】:

您在单行中使用了一个表达式(准确地说是使用三元运算符的表达式):您的行由一个表达式组成。

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

【讨论】:

【参考方案4】:

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

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');

【讨论】:

以上是关于JavaScript:错误 - “期望一个赋值或函数调用,而是看到一个表达式”?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 错误处理完整指南

为啥内联 JavaScript 在引用 JavaScript 错误时起作用 [重复]

JavaScript中错误正确处理方式,你用对了吗?

JavaScript中错误正确处理方式,你用对了吗?

javascript 语法错误,缺少“;”

JavaScript原生错误及检测