考虑:
函数函数名(var_one,var_two) var_one = var_two 返回 var_one 结尾 打印(函数名(“string_one”,“string_two”))
与local var_one = var_two
现在是var_one
全局变量还是仍在函数本地范围内?
应该local var_one
使用还是已经在范围内?
考虑:
函数函数名(var_one,var_two) var_one = var_two 返回 var_one 结尾 打印(函数名(“string_one”,“string_two”))
与local var_one = var_two
现在是var_one
全局变量还是仍在函数本地范围内?
应该local var_one
使用还是已经在范围内?
不,没有这个必要。该名称var_one
已经是本地名称。您只是在消除原始价值。_G.var_one
如果您希望显式引用全局,则必须使用。
参数是一个局部变量(已经)。
当您引用它(赋值)时,它会查找具有该名称的词法范围变量。它找到局部变量并使用它。
如果函数是闭包,则该局部变量将成为“上值”(非局部变量)。
如果它没有找到局部变量,它将执行全局查找。如果要强制进行全局查找,只需手动进入全局表,因为这就是全局查找。
如果您更改变量的赋值以将其声明为本地,您实际上是在创建一个新的局部变量,它是词法作用域的,它与参数不同,但在词法上隐藏了它。