var i = 2; function outFun() { var i=1; return function () { return i; } } console.log(outFun()());
为什么上面的这段代码输出的结果是1?
var name = "The Window"; var object = { name: "My object", getNameFunc: function() { return function() { return name; }; } } console.log(object.getNameFunc()())
这段代码,我的想法是:这个应该是个闭包,调用
object.getNameFunc()
返回的结果是一个闭包函数,同时会带着包含全局变量对象和object变量对象和getNameFunc的变量对象的作用域链出来。在window中运行,生成一个window的活动对象,推到作用域链的前端。在返回name时候先查找活动对象中所以就返回了“The Window”。这是我对这段代码的理解。
我把这个思路套到上面那段代码中应该是返回2啊,为什么返回了1???
这两个函数有什么不同吗?求大佬解答。。。谢谢、
+++++++++++++++++++++++评论区里没换行的代码++++++++++++++++++++++++++
var name = "The Window"; var object = { age:18, name: "My object", getNameFunc: function() { var name = "i am name"; return function() { return name; }; } }; var nameFunc = object.getNameFunc(); console.log(nameFunc.call(object)); console.log(nameFunc());
qq_药药_0
相关分类