Javascript 为什么下划线使用“root”而不是“this”?
在某些情况下,我会看到别名以减少查找链,但在本例中,它是一个简单的单行别名,没有减少Javascript 为什么下划线使用“root”而不是“this”?,javascript,underscore.js,Javascript,Underscore.js,在某些情况下,我会看到别名以减少查找链,但在本例中,它是一个简单的单行别名,没有减少 var root = this; 我认为这个更具描述性,因为它将指向浏览器中的窗口,或者如果JavaScript在服务器端运行,则指向大量不同的全局变量 如果必须用别名的话我觉得 var global = this; 更具描述性 为什么要使用词根?我听说在“root用户”的上下文中使用root,但在JavaScript开发的上下文中,我不明白 在某些情况下,我会看到别名以减少查找链,但在本例中,它是一个简单
var root = this;
我认为这个
更具描述性,因为它将指向浏览器中的窗口
,或者如果JavaScript在服务器端运行,则指向大量不同的全局变量
如果必须用别名的话我觉得
var global = this;
更具描述性
为什么要使用词根?我听说在“root用户”的上下文中使用root,但在JavaScript开发的上下文中,我不明白
在某些情况下,我会看到别名以减少查找链,但在本例中,它是一个简单的单行别名,没有减少
var root = this;
它在缩小尺寸方面有一点优势<代码>根
可以缩小为一个字母,不能多次使用此
。另见
此外,root
变量在:函数中关闭
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
如果没有根目录
,则需要将其重写为
_.noConflict = function() {
this._ = previousUnderscore;
return _;
}.bind(this);
如果必须使用别名,我会觉得var global=this代码>将更具描述性。为什么要用词根
是的,global
也可以-只是它可能会增加混淆,因为global
是该对象在节点中使用的标识符<代码>根
在这里代表“根范围”或“根对象”。它在noConflict函数中使用根
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
此处此
指的是下划线,根指向全局范围
至于root而不是global,这是一个意见问题这个的含义可以在闭包中改变
function doSomething() {
function helper() {
alert(this); // I'm helping!
}
alert(this);
helper();
}
someElement.onclick = doSomething;
虽然您可能希望有两个警报显示相同的内容,但第二个警报实际上是指全局对象(或者我认为在严格模式下为null
)
执行var root=this代码>意味着您拥有可以可靠调用的、不会意外更改的内容
名称根目录
。。。好吧,它只是一个名字。JS全局范围基本上是一棵树。一棵树有一个根。它的正上方有一条注释解释了原因。它指的是窗口对象或导出对象。每当调用“new”时,都会与“this”发生冲突,将其分配给一个变量(root)可以避免冲突。