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

Posted

技术标签:

【中文标题】期望一个赋值或函数调用,而是看到一个表达式【英文标题】:Expected an assignment or function call and instead saw an expression 【发布时间】:2012-03-20 23:59:26 【问题描述】:

我对这个JSLint 错误非常满意。我怎么能忍受呢?是否有它的标志或复选框?

当你做类似的事情时你会得到它:

v && arr.push(v);

相对于:

if (v) 
    arr.push(v);

两者都做同样的事情。如果你把:

window.test = function(v) 
    'use strict';
    var arr = [];
    if (v) 
        arr.push(v);
    
    return arr;
;

进入minifier 无论如何它都会缩小到这个:

window.test=function(a)var b=[];a&&b.push(a);return b;

【问题讨论】:

【参考方案1】:

正在寻找如何在使用ESLint 时抑制它的人。您可以通过在no-unused-expressions 行上方写以下评论来忽略它

// eslint-disable-next-line no-unused-expressions

您还可以通过将以下注释放在文件的最顶部来禁止整个文件的警告

/* eslint-disable no-unused-expressions */

【讨论】:

我建议您也提供此特定规则的文档链接no-unused-expressions【参考方案2】:

您可以添加以下行来忽略该警告:

/*jshint -W030 */

您可以阅读更多关于它的信息here。

【讨论】:

答案与问题完全无关,问题是关于 JSLint,而不是 JSHint。 但对于大多数登陆这里的人来说,它仍然是最有用的答案。 “完全不相关”?因为 JSHint 与 JSLint 完全无关?【参考方案3】:

在 JSLint 中没有这个选项。您可以使用以下方法规避它:

var dummy = v && arr.push(v);

注意:dummy 之后计算为 true

另一种解决方法可能是:

function expression(statement)  
 'use strict';
 return statement; 

expression(v && arr.push);

【讨论】:

它会起作用,但它很愚蠢。缩小器实际上会解决这个问题,但为了便于阅读,最好使用 if 语句而不是 IMO。 确实如此。但你要求的方法是容忍的是。添加了另一个解决方法。就像 Crockford 在某处所说:jsLint 旨在让程序员感到痛苦 ;~) 错误的 && hack 在 jsLint 中不起作用...可能取决于版本...【参考方案4】:

我不认为 JSLint 可以选择关闭它。

JSHint(具有更多选项的分支)有一个选项,但:expr 选项,记录为“如果应允许将 ExpressionStatement 作为程序”。

【讨论】:

@diEcho:你也可以下载到本地使用(我就是这么做的)。我通过 NodeJS 运行它并设置了我的首选选项,极大地帮助我对正确的代码充满信心。 :-) 请详细描述一下,为什么会出现这个警告?

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

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

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

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

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

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

期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions?