function里面的i一直为10
#js#
为什么function里面的i一直为10,不会随着for循环的变化而变化,我能理解异步操作,但是这个不是异步吧
为什么function里面的i一直为10,不会随着for循环的变化而变化,我能理解异步操作,但是这个不是异步吧
全部评论
建议学学闭包,这是一个很常见的案例,和变量对象和作用域链有关
闭包函数的变量是调用时才变赋值,普通函数是定义时赋值可以这么理解吗
let有块级作用域,产生闭包
闭包吧,result返回一个数组,数组的元素都是返回i的函数,当你去执行result[0]()的时候,就是直接返回i这个函数,那么就往上面的作用域去找这个i,由于闭包的存在,所以for循环中的i的内存不会被销毁,且经过循环之后,已经变成10,已经返回10
因为你return 的是i呀,后面执行的时候i的最后值已经是10了
你把var改成let就行了
相关推荐
点赞 评论 收藏
分享
03-25 15:32
陕西科技大学 嵌入式软件开发 点赞 评论 收藏
分享
点赞 评论 收藏
分享