如何解决JSLint警告“不要使用'new'作副作用”?

时间:2010-09-10 16:08:00

标签: javascript jslint

为什么我会收到这些错误?

第329行问题60:不要使用'new'作副作用。

new widget.StyledDropdown(dojo.byId("sTitle"));

第330行问题61:不要在副作用中使用“新”。

new widget.StyledDropdown(dojo.byId("sSuffix"));

第336行问题57:不要使用'new'作副作用。

true,{shortenName : true,maxChars : 20});

第338行问题129:不要使用'new'作副作用。

new widget.StyledDropdown(dojo.byId("sCountry"),USPS.Address.countrySw...

2 个答案:

答案 0 :(得分:21)

您没有存储对新创建的对象的引用,这是一种代码味道。

JSLint说“你正在创建一些对象,但会立即丢弃它们;唯一可能的原因就是创建对象的行为有副作用,这很奇怪。”

你可以通过防止你的构造函数有副作用(这意味着找到一些其他方式来做他们正在做的事情,例如通过将代码移动到正常函数中)或者通过存储引用来丢失警告新创建的对象(即使在您丢弃的临时局部变量中)。

答案 1 :(得分:1)

重新思考策略是最好的,但更常见的是,在开发周期中处理技术债务并不是一种选择。

如果您使用的是JSHint,则可以根据具体情况覆盖此选项。在违规代码的范围内添加此jshint注释。

/* jshint -W031 */
new widget.StyledDropdown(dojo.byId("sTitle"));
new widget.StyledDropdown(dojo.byId("sSuffix"));
...

内联配置是功能范围的。因此,仍然会检查评论范围之外的任何内容。