(function(){/*...*/}).call(this)的优点;

时间:2013-10-17 12:07:46

标签: javascript

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

另请参阅:module pattern.