为什么会输出3个10?

function a(){
    var i=10;
    b=function(){return i++;};
    return i;
}

console.log(a(),b(),a());// 10 10 10

尤其是为什么第三个还是10? i++怎么没起作用? 感谢

阅读 2.3k
2 个回答

第一个a(),直接return i 为10;
第二个b(),return i++,此时i的值是10,所以先return,再自增,输出10并且i为11;
第三个a(),重新定义了i=10,所以return 为10。

作用域的问题,建议你去看下var定义

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