在函数外部定义的变量都是全局变量,全局变量可以在程序的任何位置被访问和修改。如果在函数内部访问全局变量,需要使用全局变量名(加上"_G."前缀)来访问。
在函数内部定义的变量都是局部变量,局部变量的作用域仅限于当前函数内部。局部变量的好处是可以避免变量名冲突,提高程序的可读性和可维护性。在Lua中,可以使用关键字"local"来定义局部变量。
在Lua中,变量的作用域是静态的,也就是说,在程序运行之前就已经确定了变量的作用域。如果在同一作用域内出现了重名的变量,则后面的变量会覆盖前面的变量。在Lua中,变量的作用域是基于块(block)的,块可以嵌套,内部块的变量可以访问外部块的变量,但是外部块的变量不能访问内部块的变量。在Lua中,一个块可以是一个函数体、一个if语句、一个while语句、一个for语句等。