3

最近我在别人的代码中看到了一个函数,如下所示:

function xyz(){ //function code here ;
} ();

我不明白();函数定义之后的内容。

有人可以告诉我();在 JavaScript 中使用它的意义和时间是什么吗?

4

1 回答 1

3

您显示的代码无法编译。

添加括号后,这将是一个命名的立即调用函数:

(function xyz(){ //function code here ;
}) ();

大多数情况下,这些函数是匿名的:

(function(){
   var a; // a isn't visible outside
   // code using a
})();

代码是直接调用的,就像没有函数定义一样,但是这样一个函数的重点是定义一个范围(只能是全局范围或函数),以便范围的变量不会泄漏到封闭的变量中。这种模式对于使您的代码干净非常有用:您不会在外部范围内添加任何变量,也不能删除现有的变量。

这里函数还有一个名字,可以在里面进行递归使用。

(function xyz(){
   var a; // a isn't visible outside
   // code using a and calling xyz
})();
于 2013-02-03T19:22:14.603 回答