为了账号安全,请及时绑定邮箱和手机立即绑定

js菜鸟的提问

js菜鸟的提问

onaug6th 2016-12-01 15:57:42
请问这个函数的流程是?怎么求出的结果function Foo(){        var i = 0;     return function()    {     console.log(i++);        }}   var f1 = Foo(), f2 = Foo();f1();f1();f2();
查看完整描述

3 回答

已采纳
?
GdinKing

TA贡献32条经验 获得超9个赞

 return function() {   console.log(i++);    } 表示返回的是一个函数,f1()就是调用这个函数,一开始i=0,打印出来是0,第二次执行f1()后是针对同一个对象i操作的,i加了1,所以打印1,第三个执行f2(),此时不再是对之前的对象i操作,而是新的对象,所以i还是0


查看完整回答
2 反对 回复 2016-12-01
  • onaug6th
    onaug6th
    谢谢你
  • GdinKing
    GdinKing
    这是ES5的缺陷,连续调用同一个函数会使用函数里定义的同一个对象,去了解下ES6,里面重新定义了局部变量和全局变量的范围以及作用域
?
蜂之谷

TA贡献564条经验 获得超863个赞

自己试试不就知道了  0  1  0

查看完整回答
1 反对 回复 2016-12-01
  • onaug6th
    onaug6th
    请问这个是放哪里编译的啊?
  • 蜂之谷
    蜂之谷
    保存为html格式文件,在浏览器中打开,F12控制台中看log
  • 3 回答
  • 0 关注
  • 1542 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信