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());
小熊熊HELLO
qq_药药_0
随时随地看视频慕课网APP
相关分类