达拉~ 2022-05-16 21:04 采纳率: 64.7%
浏览 43
已结题

这两个函数为什么运行结果差异解释

首先他么的数组中放的都是没有执行的函数体,在下面执行的时候调用i这个变量,我可以理解第二个的输出,但是第一个的返回值i为什么可以固定i循环时的值,他本身有没有执行

这段代码
 var list = []
        var str = ''
        for (var i = 0; i < 10; i++) {
            (function (i) {
                console.log(i)
                list.push(function () {
                    return i
                })
            })(i)
        }
        console.log(list)
        for (var j = 0; j < 10; j++) {
            console.log(list[j]())
            str += list[j]()
        }
        console.log(str)//输出0123456789
和这段代码
var list = []
        var str = ''
        for (var i = 0; i < 10; i++) {

            list.push(function () {
                console.log(i)
                return i
            })
            console.log(list[i])
        }
        console.log(i)
        console.log(list)
        for (var j = 0; j < 10; j++) {
            // console.log(list[j])
            str += list[j]()
        }
        console.log(str)//输出10101010101010101010
 </script>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 5月20日
    • 创建了问题 5月16日