2

我上个月开始 JavaScript 编程,我知道对象、函数、类、字符串、数组、属性等基本语法。现在我对给定的语法感到困惑。

句法:

(function(){

 "use strict";

})();

我的问题是,为什么定义中包含两个括号(一个包含 'function' 和另一个 "empty" )?有人可以帮我为什么我们使用它吗?

4

4 回答 4

2

这将创建一个匿名函数,然后立即执行它。

在这种情况下,该函数只有一行"use strict"......

于 2013-02-07T23:31:31.880 回答
2

该代码对世界没有任何净影响。会发生什么:

  • 括号内的函数被实例化;
  • ()调用该函数的最终原因;
  • “use strict”常量开启“strict”模式;
  • 函数返回。
于 2013-02-07T23:31:46.373 回答
1

你有一个自我调用的功能。

几乎就是这样,一个立即被调用的函数。为此,我们需要一个函数表达式,而不是函数声明。为此,我们可以做一些事情,其中​​之一是将整个表达式放在括号中

(function() {});

此语句创建一个函数表达式。现在我们要做的就是通过附加额外的函数括号来调用该函数,就像我们对任何函数所做的那样

(function() {})();

你也可以把函数括号放在整个语句中,没有区别

(function() {}());

将函数带入表达式形式的另一种选择是在其前面使用!+标记

!function(){}()

任何事情都会发生,只要我们创建一个表达式,我们就不能调用这样的函数声明

function foo(){}() // syntax error
于 2013-02-07T23:34:50.053 回答
1

这是一个自调用的匿名函数(或立即调用的函数表达式,也称为 IIFE),在这种情况下,这种模式的存在只是为了产生一个封闭的作用域。

显然,他们不想"use strict";为整个文件打开严格模式,或者在缩小并连接到其他文件时,在包含的库上打开严格模式等。亚马逊不久前就遇到了这个问题。从那时起,建议将最佳实践保留"use strict"在函数范围内,并且此函数仅用于此目的。

于 2013-02-07T23:31:55.003 回答