Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;“匿名函数”;用Javascript是什么意思?_Javascript_Function - Fatal编程技术网

什么是;“匿名函数”;用Javascript是什么意思?

什么是;“匿名函数”;用Javascript是什么意思?,javascript,function,Javascript,Function,我在玩弄JS,我发现: 有人想解释一下吗?匿名函数是一个没有名字的函数。它们不是特定于Javascript的,请参阅 对于JS,基本上不是这样: function myFunc() { } 你可以做: var myFunc = function() { } (function(){ alert("Hello World!") })(); 调用Function()函数(它是Function对象的构造函数)时,它会返回一个函数。以这种方式动态创建的函数没有名称,因此命名为“匿名” 请参阅:匿

我在玩弄JS,我发现:


有人想解释一下吗?

匿名函数是一个没有名字的函数。它们不是特定于Javascript的,请参阅

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

function myFunc() { }
你可以做:

var myFunc = function() { }
(function(){ alert("Hello World!") })();

调用
Function()
函数(它是
Function
对象的构造函数)时,它会返回一个函数。以这种方式动态创建的函数没有名称,因此命名为“匿名”


请参阅:

匿名函数是没有名称的函数。例如,您可以执行以下操作:

var myFunc = function() { }
(function(){ alert("Hello World!") })();
这将创建一个没有名称的函数并立即调用它。如果代码导致引发异常,JavaScript运行时将在匿名函数中报告失败

此外,函数本身就是名为
Function
的类的对象。您可以使用此类定义如下所示的新函数(而不是内置语法):

这与写作基本相同:

(function(x, y) { return x + y })(1, 2);

这让您可以窥探JavaScript函数的面向对象特性。

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

通常是一个命名函数

function anonymous(x) {
  if (x) {
    alert('hi');
  } else {
    anonymous(!x);
  }
}
无论传入的值是多少,都将发出警报,因为函数名可用于递归调用(模IE bug),但通过
新函数创建的
匿名
并非如此

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

失败,出现错误。

-1请再次查看该问题-您将看到该问题与
函数匿名(){
从控制台-查看包含的屏幕截图操作。
+1
-绑定到HTML元素的函数也是匿名的。例如,如果您有
,并在调试器下查看
foo.onclick
,您将得到相同的结果。如果我执行
函数('test')
,我将收到:
函数匿名(){test}
。这仍然返回名为
匿名的函数。
。最后一个参数是函数体,它前面的所有参数都是函数参数。您的参数“test”指定函数的代码体。没有(标准)在调试器中设置函数名的方法。Yea@Tadeck是正确的-函数的
构造函数没有函数名的参数。它总是返回对匿名函数的引用。我不会说名称“anonymous”如果是,下面的代码不会给出引用错误…
函数('alert(anonymous)')();
它以该名称显示,但该函数实际上没有名称。+1表示“这是一个怪癖…它不重要,并且在EcmaScript规范的任何版本中都不会出现”。
Function();匿名();//引用错误