2012-02-02 100 views

回答

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功能的面向对象的特性。

0

匿名函数是一个没有名字的函数。他们不是具体为Javascript,看到http://en.wikipedia.org/wiki/Anonymous_function

对于JS,基本上不是这样的:

function myFunc() { } 

你可以这样做:

var myFunc = function() { } 
+0

-1请再看看这个问题 - 你会发现问题是关于函数anonymous(){'从控制台 - 请参阅截图OP包括。 – Tadeck 2012-02-02 19:49:21

1

当调用Function()功能(这是一个它返回给你一个函数。以这种方式动态创建的函数没有名称,所以给它一个名称“anonymous”。

参见:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

+0

'+ 1' - 绑定到HTML元素的函数也是匿名的。例如,如果你有''并且在调试器下查看'foo.onclick',你会得到同样的结果。 – 2012-02-02 19:53:51

+0

你的参数'test'指定了函数的代码体。在调试器中没有(标准)方法设置函数的名称。 – 2012-02-02 19:54:16

1

这是一个古怪的方式Function.prototype.toString多个浏览器的实现呈现通过Function构造函数创建的函数,但它并不重要,它不出现在任何版本的EcmaScript规范。

通常命名函数

function anonymous(x) { 
    if (x) { 
    alert('hi'); 
    } else { 
    anonymous(!x); 
    } 
} 

alert不管传递的价值,因为该函数的名称可用于递归调用它(模IE漏洞),但这是不符合的情况下通过new Function创建anonymous

(new Function('x', 'if (x) alert("hi"); else anonymous(!x);'))(false) 

失败并显示错误。

+0

+1 for *“这是一个怪癖......它并不重要,它不会出现在任何版本的EcmaScript规范中。”*。 '函数();匿名(); // ReferenceError' – 2012-02-02 20:06:28

相关问题