codecamp

作用域

作用域

Lua的作用域以关键字end进行标识。

对于变量,有一条原则:在一切能使用local修饰的情况下,使用local进行修饰。

因为不用local修饰的变量会自动变成全局变量。全局变量十分危险,很容易被篡改而不知道在哪里被篡改了,这很容易导致顽固的bug出现。并且全局变量的处理速度也比局部变量的速度要慢很多。

所以,尽可能的用local来修饰变量。

有时候,用do .. end可以用来明确限定局部变量的作用域。

local  v

do

  local  x  =  u2*v3-u3*v2

  local  y  =  u3*v1-u1*v3

  local  z  =  u1*v2-u2*v1

  v  =  {x,y,z}

end  -- x,y,z的作用域结束,被系统清理

local  count

do

  local  x  =  0

  count  =  function()  x  =  x  +  1;  return  x  end

end  -- x的作用域结束,被系统清理
命名
模块
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }