求教一个lua问题

local w = {}
for i=1,10 do
w[i] = function () print(i) end
end
w【5】()

能不能总作用域和变量名的角度讲解一下 w【5】()最后的输出结果为什么为5?
for 循环内的i是局部变量 外部调用w【5】()输出的i 为什么还会保存for循环内部的值?

打开lua官网阅读闭包章节