Javascriptissexy.com上理解示例的问题

Javascriptissexy.com上理解示例的问题,javascript,scope,callback,Javascript,Scope,Callback,以上是我试图从以下网站了解的代码: 在这里,作者提到输出应该是“Result:Richard”,但控制台输出是“Result:Result” 请解释差异的原因。提前谢谢。-我无法重现这个问题,因为代码中的注释提到的这个将是全局窗口对象。因此this.name是window.name,它是窗口的名称。您很可能会将代码输入到类似JSFIDLE或类似站点的编辑器中,其中默认操作是将输入的js代码包装到onload/dom就绪事件中。这将导致第一个var名称不是全局的,并导致window.name未设置

以上是我试图从以下网站了解的代码:

在这里,作者提到输出应该是“Result:Richard”,但控制台输出是“Result:Result”


请解释差异的原因。提前谢谢。

-我无法重现这个问题,因为代码中的注释提到的
这个
将是全局
窗口
对象。因此
this.name
window.name
,它是窗口的名称。您很可能会将代码输入到类似JSFIDLE或类似站点的编辑器中,其中默认操作是将输入的js代码包装到onload/dom就绪事件中。这将导致第一个
var名称
不是全局的,并导致
window.name
未设置为
Richard
@PatrickEvans:是的,您是正确的。我试图在JSFIDLE中实现它。但我很好奇变量名的值在JSFIDLE中是如何设置为“result”的?@Quentin:我应该在将来发布javascript查询时使用JSBIN吗?谢谢你的指导。问题应该包括问题本身所需要的一切。Stackoverflow包括在问答中运行实时演示的功能。我只会使用第三方网站来进行代码演示以获取评论。
var name = "Richard";

function not(f) {
    return function() {
        console.log("This: " + this);
        var result = f.apply(this);
        return result;
    };
}
function test () {
    var name = "Rob";
    console.log("Result: " + this.name);
    return this.name; // Richard (not Rob, because "this" refers to the window object, and it uses the name variable from the global window object)
}
var news = not (test);
news ();