【发布时间】:2015-02-07 10:26:40
【问题描述】:
我想使用“noop”函数(我的意思是,一个什么都不做的函数,仅用于模型目的)。所以我写:
var noop = Function();
但是当我对文件运行 jshint 时,我收到以下错误:
Missing 'new' prefix when invoking a constructor.
当我将Function() 更改为Function.prototype 时,此错误消失,但我更喜欢第一个。
为什么会出现这个错误?如何防止出现这种提示?
提前致谢。
【问题讨论】:
-
任何在调用时第一个字符为大写的函数都被认为是一个新实例。你可以做 var noop = function(){} 这会给你同样的结果。另外,直接使用 Function() 被认为是一种不好的做法。
-
为什么这是一种不好的做法?
-
由 Function() 创建的函数在调用时会被解析。这比使用与其余代码一起解析的 function(){} 表达式效率低。使用 Function() 创建的函数始终在全局范围内创建。不要误会我的意思,它有它的位置。使用 Function() 而不是 eval 被认为是一种更好的做法。那是我会使用它的地方。在大多数情况下使用命名函数。
标签: javascript jshint