Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript做什么?_Javascript_Syntax - Fatal编程技术网

用javascript做什么?

用javascript做什么?,javascript,syntax,Javascript,Syntax,我在阅读js源代码时遇到了这个问题 var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || this || {}; // Save the pr

我在阅读js源代码时遇到了这个问题

var root = typeof self == 'object' && self.self === self && self ||
            typeof global == 'object' && global.global === global && global ||
            this ||
            {};

  // Save the previous value of the `_` variable.
  var previousUnderscore = root._;
根是什么?
在这里做什么?

通常,该代码块将导致
前面的下划线
引用
self
global
this
上的
属性(无论求值对象是
),并且所述属性值可能不存在。它与任何其他属性名称没有区别

例如,如果第一个条件通过:

typeof self == 'object' && self.self === self && self
然后,如果
self
具有包含
'foo'
\ucode>属性,则
先前的下划线
将被分配相同的字符串
'foo'

const self={
_:“福”
};
self.self=self;
var root=typeof self=='object'&&self.self===self&&self||
typeof global=='object'&&global.global===global&&global||
这个||
{};
//保存``变量的上一个值。
var previous下划线=根;

log(PreviousUnderline,PreviousUnderline的类型)(提示:
\uu
是jQuery的
$
)这就是此库全局绑定的内容。这段代码正在检查它们是否会覆盖其他内容,类似于
noConflict
选项。那么在前面的下划线变量上没有更多的窗口对象可用吗?我试图理解核心概念。有些问题可能很愚蠢,但…@Nagaraj
window.self
在浏览器中返回
window
self
返回工作者的全局对象<节点中的code>global
将返回全局对象,其他一些环境可能有其他绑定,因此作为最后的手段,
从IIFE内部应该是全局对象。现在,请注意,有一个js建议实现一个属性,该属性可以避免所有这些检查。@Nagaraj是的,问题是如果全局对象的
\uuu
被下划线覆盖,这可能是不需要的,因此,
noConflict
使用
previousUnderline
变量在闭包中保存
的上一个值,以便在调用(if)
noConflict
时将其重新分配回全局对象。这并不愚蠢,这一切的目的并不完全显而易见