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()); |