JavaScript中匿名函数(或其他任何东西)的目的/好处是什么?

时间:2016-01-24 03:53:35

标签: javascript function

过去几周我看到很多应用程序在脚本开头都有这种脚本:

(function() {
  // Code goes here...
});

任何人都可以解释这个或者有关于此的一些资源的链接吗?

3 个答案:

答案 0 :(得分:1)

"use strict"用于确保声明所有变量。例如,我可以做到没有错误:

x = 3;

虽然没有宣布,但我做不到:

"use strict";
x = 3;

没有抛出错误。我必须使用:

"use strict";
var x = 3;

"use strict"可用于function。例如:

x = 3; // no error
myFunc();
function myFunc() {
    "use strict";
    y = 3; // error
}

修改

delete模式下,您也无法use strict变量。

答案 1 :(得分:0)

  

匿名函数是动态声明的函数   运行。它们被称为匿名函数,因为它们没有给出   名称与普通函数相同。

     

使用函数运算符声明匿名函数   函数声明。您可以使用函数运算符   创建一个新函数,只要它放置表达式是有效的。对于   例如,您可以将新函数声明为函数的参数   调用或分配另一个对象的属性。

Here就是这篇文章。

答案 2 :(得分:0)

实际上,这可能就像:



(function() {
  "use strict"
  var x = 1;
  document.write("I am inside the function scope and x=", x, "<br/>");
}())

if (typeof(x) === "undefined") {
  document.write("I am outside the function scope and x=undefined");
}
&#13;
&#13;
&#13;

该函数创建一个范围,您可以使用该范围来防止在全局范围内设置变量等。 &#34;使用严格&#34;有助于保持代码清洁并抛出可能导致错误的常见错误(例如重新声明同名变量。请注意,在上面的代码中,var x在函数范围内设置。在函数范围之外,它是未定义的。如果你加载了这两件事在不同的.js文件中,并且来自不同的作者,他们每个人都可以使用自己的&#34; var x&#34;并且它们不会发生冲突,因为它们位于不同的范围而不是设置在全局范围内。

至于&#34;使用严格的&#34;模式以及它具体阻止您在此处的文档中可以看到更多详细信息: MDN "use strict" docs

作为参考,此代码开头的函数被视为IIFE(立即调用的函数表达式)。