我有点骗过JS,我发现了这个:
有人在乎解释吗?
答案 0 :(得分:1)
当你调用Function()
函数(它是Function
个对象的构造函数)时,它会返回一个函数。以这种方式动态创建的函数没有名称,因此给它命名为“anonymous”。
请参阅:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
答案 1 :(得分:1)
匿名函数是没有名称的函数。例如,你可以这样做:
(function(){ alert("Hello World!") })();
这会创建一个没有名称的函数并立即调用它。如果代码引发异常,则JavaScript运行时将在匿名函数中报告失败。
此外,函数本身就是一个名为Function
的对象。您可以使用此类来定义这样的新函数(而不是内置语法):
(new Function("x", "y", "return x+y"))(1, 2);
这与写作几乎相同:
(function(x, y) { return x + y })(1, 2);
这可以让您了解JavaScript函数的面向对象特性。
答案 2 :(得分:1)
多个浏览器的Function.prototype.toString
实现呈现通过Function
构造函数创建的函数的方式是一个怪癖,但它并不重要,并且它不会出现在任何版本的EcmaScript规范中。
通常是命名函数
function anonymous(x) {
if (x) {
alert('hi');
} else {
anonymous(!x);
}
}
将alert
无论传入的值是什么,因为函数的名称可用于递归调用它(模IE错误),但通过anonymous
创建的情况不是这种情况new Function
。
(new Function('x', 'if (x) alert("hi"); else anonymous(!x);'))(false)
因错误而失败。
答案 3 :(得分:0)
匿名函数是没有名称的函数。它们并非特定于Javascript,请参阅http://en.wikipedia.org/wiki/Anonymous_function
对于JS,基本上不是这样的:
function myFunc() { }
你可以这样做:
var myFunc = function() { }