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)可以避免冲突。