首页 >web前端 >js教程 >为什么 JavaScript 中要用括号创建封装的匿名函数?

为什么 JavaScript 中要用括号创建封装的匿名函数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-16 10:41:11371浏览

Why Do Parentheses Create Encapsulated Anonymous Functions in JavaScript?

封装匿名函数的语法

在 JavaScript 中,封装匿名函数是通过将函数括在括号中并立即执行来创建的:

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

此语法用于避免变量和变量使全局范围变得混乱函数。

为什么有效: (function(){})();

当括号括住函数声明时,结果将被计算为函数表达式。函数表达式允许使用可选名称,因此该表达式可以在没有名称的情况下运行。

为什么这不起作用:function(){}();

On另一方面,当没有括号时,JavaScript 将其解析为函数声明。函数声明需要名称标识符,在本例中缺少名称标识符。

函数声明与表达式

  • 函数声明:函数标识符(参数) { . .. }
  • 函数表达式:(函数标识符(参数) { ... })

函数表达式可以命名或未命名,而函数声明必须有名称。

括号和上下文

括号表示所包含的代码是一个表达式。是函数声明还是表达式取决于上下文。函数声明可以出现在全局作用域或另一个函数体内,而函数表达式只能出现在表达式中。

歧义示例

0, function foo() {} // Function Expression
function foo() {} // Function Declaration

在此示例中,解析器根据上下文确定它是函数声明还是表达式。表达式可以出现在表达式中,而声明只能出现在特定位置。

为什么应避免块中的函数

块内的函数可能会导致意外行为由于变量范围问题。例如:

if (true) {
  function foo() {
    alert('true');
  }
} else {
  function foo() {
    alert('false!');
  }
}

foo(); // true? false? why?

以上是为什么 JavaScript 中要用括号创建封装的匿名函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn