期望一个赋值或函数调用,而是看到一个表达式
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:错误 - “期望一个赋值或函数调用,而是看到一个表达式”?