为什么function里的i是for循环结束的值啊!

img


搞不明白,arr中括号里的i会随着for循环的i变化而变化,为什么当arr[i]=function(){}里面return的i就不变化。说是因为var没有块级作用域,但这和块级作用域有什么关系

主要还是局部变量的原因

  • 以下回答由chatgpt基于相关博客总结生成:

    问题回答:

    循环内的变量 i 与函数返回值 i 其实是两个不同的变量,一个是局部变量,一个是全局变量,i 的变化与变量作用域有关。 在函数内部定义了一个变量 i,但是在函数外部未定义,所以 i 是一个局部变量,在循环内部进行变更,只作用于循环内部,不会影响到函数的返回值。 如果想在函数内部通过循环改变返回值,可以通过定义一个全局变量,并将其作为返回值,示例代码如下:

    i = 0
    def test_func():
        global i
        for j in range(10):
            i += j # 修改全局变量 i 的值
        return i
    print(test_func())
    

    执行结果为:45,说明返回值 i 是全局变量 i 的值。