这道题的输出结果是什么?为什么?求助……

var value = 1;
function foo(){
    console.log(value);
}
function bar(){
    var value = 2;
    foo();
}
bar();
阅读 2k
3 个回答

答案是1。函数的作用域在定义时确定,而不是在运行时确定。所以bar里面的value不会影响到foo的作用域。

输出1。

function bar(){
    var value = 2;
    foo();
}

虽然foo在bar里被调用,但是查找作用域是foo->window,并不是foo->bar->window。

如楼上所说答案是1,建议去看下闭包相关的内容.
在函数foo()跟bar()里面是有各自的函数作用域的.
我举个栗子给你说明吧.
$(document).ready(function(){
function foo(){
}
});
foo();// foo is not defined.
这样是会报错的,因为作用域不一样了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题