function里面的i一直为10

#js#
为什么function里面的i一直为10,不会随着for循环的变化而变化,我能理解异步操作,但是这个不是异步吧
全部评论
建议学学闭包,这是一个很常见的案例,和变量对象和作用域链有关
2 回复 分享
发布于 2023-06-17 16:50 广东
闭包函数的变量是调用时才变赋值,普通函数是定义时赋值可以这么理解吗
点赞 回复 分享
发布于 2023-07-23 00:15 湖南
let有块级作用域,产生闭包
点赞 回复 分享
发布于 2023-07-03 00:39 广西
闭包吧,result返回一个数组,数组的元素都是返回i的函数,当你去执行result[0]()的时候,就是直接返回i这个函数,那么就往上面的作用域去找这个i,由于闭包的存在,所以for循环中的i的内存不会被销毁,且经过循环之后,已经变成10,已经返回10
点赞 回复 分享
发布于 2023-06-17 17:48 江苏
因为你return 的是i呀,后面执行的时候i的最后值已经是10了
点赞 回复 分享
发布于 2023-06-16 13:07 重庆
你把var改成let就行了
点赞 回复 分享
发布于 2023-06-16 03:27 湖南

相关推荐

03-11 10:06
已编辑
河南师范大学 C++
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务