为什么我将窗口对象传递给模块模式?

7 javascript

这是一个自动执行匿名方法.

将窗口作为全局传递似乎是一种好习惯.如果窗口随处可用,为什么要这样做?

(function (global) { 

 /* my code */ 

 global["someName"] = someObject; 

})(window);
Run Code Online (Sandbox Code Playgroud)

T. *_*one 6

它跳过了必须进行范围查找的代码,因为它global是作用于函数内部的.


编辑 - 这是一项性能优化.javascript中的范围仅限于函数范围. global在这种情况下,正在该范围内定义,因此当代码命中时,global[...]它会查看它的直接范围(在函数内)并立即找到global.如果没有它,它将不得不移动到闭包范围,在这种情况下是全局javascript命名空间,并搜索整个范围window.

  • 不同的开发人员在不同的规模.一些开发人员编写的代码每周运行一次,其他人编写的代码每天运行数百万次.根据规模,优化可能重要,也可能不重要.实用程序员的核心是知道哪些细节与你正在编写的代码相关,按照你编写的规模,并专注于那些. (2认同)