求助,一道关于闭包的测试题
lua吧
全部回复
仅看楼主
level 1
非常度8 楼主
local data = 100
local function fun1()
print(data)
data = data+50
end
data = 200
local data = 300
local function fun2()
print(data)
data = data+50
end
data = 400
fun1()--200
fun2()--400
fun1()--250
fun2()--450
这道题输出为什么会是这样?
2018年05月31日 03点05分 1
level 7
+3
2018年05月31日 16点05分 2
level 8
第一行的data是fun1的upvalue,即fun1的外部local变量,它是与fun1绑定的,所以第1次调用fun1的时候打印的是该data的当前值,即200,打印完之后该data加了50,所以第2次调用fun1的时候打印的是250。
同理可理解fun2的输出结果。
2018年06月06日 02点06分 3
1