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

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

本文关键字:call this of function Advantage      更新时间:2023-09-26

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

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

这种模式在javascript中有什么优点?

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

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

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

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

另请参阅:模块模式。