// 1xo = 'tomcat'; function Func(){ var xo = "seven"; function inner(){ console.log(xo); } return inner;} var ret = Func();ret();// 输出结果: seven // 2xo = 'tomcat'; function Func(){ var xo = "mei"; function inner(){ console.log(xo); } xo = 'seven'; return inner;} var ret = Func();ret();// 输出结果: sevenxo = 'tomcat'; function Bar(){ console.log(xo);} function Func(){ var xo = "seven"; return Bar;} // 3var ret = Func();ret();// 输出结果: tomcat// 这三个代码块 到底是怎么运行的???????????// 求解释
1 回答
joffyzou
TA贡献45条经验 获得超17个赞
1、ret=inner(),是在 Func() 函数内定义, 此时变量 xo 的值是 "seven" ,虽然 xo 是全局变量,但是在函数作用域内被重新赋值。
2、Func() 函数内部 xo 的值最后是 'seven',Func() 返回一个函数,这是闭包。当 ret() 执行的时候,实际上是执行了 inner() 。
3、ret() 实际上执行了 Bar(),xo 的值就是全局变量下的 'tomcat'。变量不是在哪里执行寻找值,而是在哪里定义寻找值。
添加回答
举报
0/150
提交
取消