我想使用" noop"函数(我的意思是,一个不做任何事情的函数,仅用于模型目的)。所以我写道:
var noop = Function();
但是当我对文件运行 jshint 时,我收到以下错误:
Missing 'new' prefix when invoking a constructor.
当我为Function()
更改Function.prototype
时,此错误消失了,但我更喜欢第一个。
为什么会出现这种错误?我怎样才能阻止这个提示?
提前致谢。
答案 0 :(得分:2)
您的表达实际上与
相同var noop = new Function();
或
var noop = new Function;
您可以看到每次运行Function() === Function()
我看到在生产中使用的最短和最安全的替代方案是:
var noop = Number;
jshint应该很酷这个。优点是每次使用时都不会创建新对象。
更新的
只是为了完整性,jshint抱怨因为调用构造函数(大写的第一个字母按惯例意味着构造函数)而没有新的可能是危险的,因为这些函数中的this
在ES3中是window
并且对{的任何更改{1}}修改全局对象。