Async库中有这段代码:
if (typeof window == 'object' && this === window) {
root = window;
}
else if (typeof global == 'object' && this === global) {
root = global;
}
else {
root = this;
}
Run Code Online (Sandbox Code Playgroud)
所有这些代码都有什么理由吗?为什么没有作者才使用root = this
?
第一个条件仅在何时this === window
,因此root = window
并且root = this
应该是等效的.第二种情况也是如此,root = global
应该相当于root = this
.
我在这里错过了什么吗?
它不仅是多余的,而且似乎也是错误的.
就在你的片段之前,有这样的:
// global on the server, window in the browser
var root, previous_async;
Run Code Online (Sandbox Code Playgroud)
所以目标是分配给root
全局对象.
应该对这样的库进行编码以在严格模式下工作(不仅在严格模式下,它至少应该是兼容的).在严格模式下,IIFE执行的上下文是undefined
.此代码始终无法在严格模式下找到根对象,无论是在节点还是在浏览器中.
请注意,有可靠的方法来查找根对象.标准的是进行间接呼叫:
var root = (1,eval)('this');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
94 次 |
最近记录: |