1

在查看uuid.js的代码时,我注意到整个 api 定义的这种模式。

(function() {/*...*/}).call(this);

javascript 中这种模式的优点是什么?

4

2 回答 2

4

它只是一个立即调用的函数表达式,具有定义的上下文 ( this)。普通的 IIFE 将全局对象作为其上下文。

读取您链接到的源文件,在这种情况下(不是双关语),他们this用来获取对全局对象的显式引用,而不假设它被命名为window(对于浏览器)或global(对于 node.js 等) .

(IIFE 是一种常见的构造,用于创建一个新的范围,可以在其中声明变量而不会污染全局名称空间,并且可以立即执行块中的代码)。

于 2013-10-17T12:09:52.603 回答
1

这样做的主要优点是您可以在函数内声明任意数量的变量,并且它们不会污染全局范围。

另见:模块模式。

于 2013-10-17T12:11:26.990 回答