Javascript 给定代码的输出是什么?为什么?

Javascript 给定代码的输出是什么?为什么?,javascript,Javascript,“this”关键字如何与闭包一起使用 var a=1000; var b=2000; 变量obj2={ a:100, b:200, sum:函数回调{ 回调; }, sum1:功能{ console.loga:+this.a; 控制台.logthis.a+this.b; } }; 变量obj1={ a:10, b:20, 调用和:函数{ obj2.sumobj2.sum1; } }; obj1.callSum 由于obj2.sum1函数是通过引用传递的,而不是作为对象的成员调用,因此这是全局范

“this”关键字如何与闭包一起使用

var a=1000; var b=2000; 变量obj2={ a:100, b:200, sum:函数回调{ 回调; }, sum1:功能{ console.loga:+this.a; 控制台.logthis.a+this.b; } }; 变量obj1={ a:10, b:20, 调用和:函数{ obj2.sumobj2.sum1; } }; obj1.callSum 由于obj2.sum1函数是通过引用传递的,而不是作为对象的成员调用,因此这是全局范围,而不是obj2

一个简单的例子:

var a = "global"
var obj = {
  a: "object",
  f: function() { console.log(this.a) }
}
obj.f();    // object
var func_ref = obj.f;
func_ref(); // global

在这两种情况下执行相同的函数。但是编写obj.f意味着绑定上下文:this=obj

只需将其复制/粘贴到jsfiddle.net的javascript窗口中,您就可以随心所欲地运行/播放它。您的浏览器控制台是答案的所在,因此按下F12按钮可在浏览器中查看答案。这个问题的可能重复既过于笼统又过于具体。您可以自己测试代码,看看会发生什么,您还可以阅读关于闭包如何工作的完整教程了解详细信息。