詞法做用範圍:函數
x = 10 -- 全局變量 do -- 新的語句塊 local x = x -- 新的一個 'x', 它的值如今是 10 print(x) --> 10 x = x+1 do -- 另外一個語句塊 local x = x+1 -- 又一個 'x' print(x) --> 12 end print(x) --> 11 end print(x) --> 10 (取到的是全局的那一個)
注意這裏,相似 local x = x
這樣的聲明, 新的 x
正在被聲明,可是尚未進入它的做用範圍, 因此第二個 x
指向的是外面一層的變量。由於有這樣一個詞法做用範圍的規則, 因此能夠在函數內部自由的定義局部變量並使用它們。 當一個局部變量被更內層的函數中使用的時候, 它被內層函數稱做 upvalue(上值),或是 外部局部變量。lua
注意,每次執行到一個 local 語句都會定義出一個新的局部變量。spa
metatable 元表:
code
dorm