“函数匿名”在Javascript中意味着什么?

时间:2012-02-02 19:43:45

标签: javascript function

我有点骗过JS,我发现了这个:

enter image description here

有人在乎解释吗?

4 个答案:

答案 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() { }