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

Ame*_* Ra 10 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...

Ric*_*dle 21

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

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

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

  • @Tim:是的,那是我的意思.为什么我们不能只说"糟糕的做法"? (3认同)
  • 我对这个问题感到好奇......做新的通知({title:title,body:body})是不好的做法,但做好`var unused的好习惯; {......一些代码......}; unused = new Notificaiton({title:title,body:body})`?在我看来,将ref存储在temp var中也很糟糕且令人困惑.这也不会是另一个jslint错误(未使用的var):`function blah(args){var x = new Notification(args);/*更多代码*/}`? (2认同)