我上个月开始 JavaScript 编程,我知道对象、函数、类、字符串、数组、属性等基本语法。现在我对给定的语法感到困惑。
句法:
(function(){
"use strict";
})();
我的问题是,为什么定义中包含两个括号(一个包含 'function' 和另一个 "empty" )?有人可以帮我为什么我们使用它吗?
我上个月开始 JavaScript 编程,我知道对象、函数、类、字符串、数组、属性等基本语法。现在我对给定的语法感到困惑。
句法:
(function(){
"use strict";
})();
我的问题是,为什么定义中包含两个括号(一个包含 'function' 和另一个 "empty" )?有人可以帮我为什么我们使用它吗?
这将创建一个匿名函数,然后立即执行它。
在这种情况下,该函数只有一行"use strict"
......
该代码对世界没有任何净影响。会发生什么:
()
调用该函数的最终原因;你有一个自我调用的功能。
几乎就是这样,一个立即被调用的函数。为此,我们需要一个函数表达式,而不是函数声明。为此,我们可以做一些事情,其中之一是将整个表达式放在括号中
(function() {});
此语句创建一个函数表达式。现在我们要做的就是通过附加额外的函数括号来调用该函数,就像我们对任何函数所做的那样
(function() {})();
你也可以把函数括号放在整个语句中,没有区别
(function() {}());
将函数带入表达式形式的另一种选择是在其前面使用!
或+
标记
!function(){}()
任何事情都会发生,只要我们创建一个表达式,我们就不能调用这样的函数声明
function foo(){}() // syntax error
这是一个自调用的匿名函数(或立即调用的函数表达式,也称为 IIFE),在这种情况下,这种模式的存在只是为了产生一个封闭的作用域。
显然,他们不想"use strict";
为整个文件打开严格模式,或者在缩小并连接到其他文件时,在包含的库上打开严格模式等。亚马逊不久前就遇到了这个问题。从那时起,建议将最佳实践保留"use strict"
在函数范围内,并且此函数仅用于此目的。