Action script的作用域

在看action script,看到了变量作用域,实际上和javascript是一样的。 查看原文 变量的"作用域"是指可在其中通过引用词汇来访问变量的代码区域。“全局"变量是指在代码的所有区域中定义的变量,而"局部"变量是指仅在代码的某个部分定义的变量。在 ActionScript 3.0 中,始终为变量分配声明它们的函数或类的作用域。全局变量是在任何函数或类定义的外部定义的变量。例如,下面的代码通过在任何函数的外部声明一个名为 strGlobal 的全局变量来创建该变量。从该示例可看出,全局变量在函数定义的内部和外部均可用。 var strGlobal:String = “Global”; function scopeTest() { trace(strGlobal); // 全局 } scopeTest(); trace(strGlobal); // 全局 可以通过在函数定义内部声明变量来将它声明为局部变量。可定义局部变量的最小代码区域就是函数定义。在函数内部声明的局部变量仅存在于该函数中。例如,如果在名为 localScope() 的函数中声明一个名为 str2 的变量,该变量在该函数外部将不可用。 function localScope() { var strLocal:String = “local”; } localScope(); trace(strLocal); // 出错,因为未在全局定义 strLocal 如果用于局部变量的变量名已经被声明为全局变量,那么,当局部变量在作用域内时,局部定义会隐藏(或遮蔽)全局定义。全局变量在该函数外部仍然存在。例如,下面的代码创建一个名为 str1 的全局字符串变量,然后在 scopeTest() 函数内部创建一个同名的局部变量。该函数中的 trace 语句输出该变量的局部值,而函数外部的 trace 语句则输出该变量的全局值。 var str1:String = “Global”; function scopeTest () { var str1:String = “Local”; trace(str1); // 本地 } scopeTest(); trace(str1); // 全局 与 C++ 和 Java 中的变量不同的是,ActionScript 变量没有块级作用域。代码块是指左大括号 ({) 与右大括号 (}) 之间的任意一组语句。在某些编程语言(如 C++ 和 Java)中,在代码块内部声明的变量在代码块外部不可用。对于作用域的这一限制称为块级作用域,ActionScript 中不存在这样的限制,如果您在某个代码块中声明一个变量,那么,该变量不仅在该代码块中可用,而且还在该代码块所属函数的其它任何部分都可用。例如,下面的函数包含在不同的块作用域中定义的变量。所有的变量均在整个函数中可用。 function blockTest (testArray:Array) { var numElements:int = testArray.length; if (numElements > 0) { var elemStr:String = “Element #”; for (var i:int = 0; i < numElements; i++) { var valueStr:String = i + “: " + testArray[i]; trace(elemStr + valueStr); } trace(elemStr, valueStr, i); // 仍定义了所有变量 } trace(elemStr, valueStr, i); // 如果 numElements > 0,则会定义所有变量 } blockTest([“Earth”, “Moon”, “Sun”]); 有趣的是,如果缺乏块级作用域,那么,只要在函数结束之前对变量进行声明,就可以在声明变量之前读写它。这是由于存在一种名为"提升"的方法,该方法表示编译器会将所有的变量声明移到函数的顶部 。例如,下面的代码会进行编译,即使 num 变量的初始 trace() 函数发生在声明 num 变量之前也是如此。 trace(num); // NaN var num:Number = 10; trace(num); // 10 但是,编译器将不会提升任何赋值语句。这就说明了为什么 num 的初始 trace() 会生成 NaN(而非某个数字),NaN 是 Number 数据类型变量的默认值。这意味着您甚至可以在声明变量之前为变量赋值,如下面的示例所示: num = 5; trace(num); // 5 var num:Number = 10; trace(num); // 10 ...

July 27, 2009 · notsobad

备案成功!

终于有了良民证了。 耗时一个月,期间网站被浪点重定向,备案中间还被打回一次。 实录: 开始 http://www.douban.com/note/37786798 结束 http://www.douban.com/note/39750935/ 这期间在豆瓣日记里记了22篇。 想做个人网站的话,还是买国外的vps吧 It sucks to be like this!

July 24, 2009 · notsobad

胡椒 花椒 麻椒

哈哈,解决了自己的一个疑问…… 胡椒和花椒完全是两种不同的植物。而且胡椒是种子,一个花椒是果壳(籽有苦味要去掉)。 当然味道也完全不同。 胡椒分为黑白两种。它们原来就是黑胡椒。经过再加工炒制就成白胡椒了 胡椒是辣的,很呛人会使人打喷嚏。 花椒是麻的。两者都是香料。 花椒的果实上有小的疙瘩。 麻椒 四川贵州地区特产的一种花椒。 麻椒颜色浅,偏棕黄色;花椒颜色重,偏棕红色。 麻椒的味道比花椒重,特别麻。 在川菜中麻椒占有很大的地位。 ...

June 20, 2009 · notsobad

php模块的调试

python里面有这样的用法 #a.py if __name__ == "__main__": print "test" //只有直接python a.py 才会打印test 意思就是当前脚本独立运行时,才会运行print “test”,这在编写模块,并被其他程序调用时,可以用来调试。 php中没有对应的,今天想起来可以这样做: ...

June 18, 2009 · notsobad

psql中的函数

psql支持PL/pgSQL - SQL 过程语言, 所以可以编写一些自己的函数以供调用。 具体语法可以参考这里 #要查询已经定义的函数可以: \df #查用户定义的函数 \df+ func_name

June 16, 2009 · notsobad

ubuntu 9.04源

ubuntu 9.04上交的源, 我这里速度很快, 北京网通的 deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty main multiverse restricted universe deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty-backports main multiverse restricted universe deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty-proposed main multiverse restricted universe deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty- security main multiverse restricted universe deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty-updates main multiverse restricted universe deb-src http://ftp.sjtu.edu.cn/ubuntu/ jaunty main multiverse restricted universe deb-src http://ftp.sjtu.edu.cn/ubuntu/ jaunty-backports main multiverse restricted universe deb-src http://ftp.sjtu.edu.cn/ubuntu/ jaunty-proposed main multiverse restricted universe deb-src http://ftp.sjtu.edu.cn/ubuntu/ jaunty-security main multiverse restricted universe deb-src http://ftp.sjtu.edu.cn/ubuntu/ jaunty-updates main multiverse restricted universe

June 12, 2009 · notsobad

从头学C

我也开始学C了,从头开始 在看Linux C编程一站式学习 写了这么简单一个程序居然也出错: #include <math.h> #include <stdio.h> /* main */ int main(){ int i; double pi = 3.1415; printf("sin(pi/2)=%f", sin(pi/2)); for (i=0; i<123; i++){ printf("%d => %c\n", i, i); } return 0; } 编译: 507 ~/script/cpp>gcc -Wall wang.c /tmp/ccuCPK1g.o: In function main': wang.c:(.text+0x29): undefined reference to sin’ collect2: ld 返回 1 google了一下,原来还是个FAQ 这样就ok了 514 ~/script/cpp>gcc -Wall -lm wang.c && ./a.out sin(pi/2)=1.000000 这个网站不错: c-faq.com ...

June 12, 2009 · notsobad

Lisp

最近在用emacs,看了些lisp的东西 原来现代语言的很多特性最早是从lisp中来的 找到几篇很好的文章: 十年学会编程 Lisp之根源 1. 条件语句。当初的语言是没有if else的,goto统治世界。 2. 函数类型。函数成了语言里的类型,可以被变量指代,可以被当成参数传来传去(的一类公民的必要条件,参考SICP第一章)。这一条可以极大简化编程,让我们写出非常漂亮的程序。所以现在的流行语言纷纷加入了这个特性(可惜Java没有)。 3. 递归。这个不用说了吧。 4. 动态类型。smalltalk, python, ruby。。。连C#也有一个类似的var了。 5. 垃圾收集。不要以为GC是Smalltalk的发明哈,更不是Java的。 6. 基于表达式的编程。任何表达式都可以成为另一个表达式的一部分。不像很多语言,把表达和陈述分开。 7. 符号类型。这个在python和ruby里被采用,广受欢迎。 8. 代码即解析树。这个让LISP能方便地定义新的句法,操作程序本身,编写元程序,生成真正意义上的宏。 9. 语言无时不在。代码运行/解析可以在任何时候发生。这点和8.配合可以让语言的扩展和交流变得非常容易。 ...

June 9, 2009 · notsobad

emacs vs vi

emacs与vi的对比 我习惯用vi,但一直想尝试下emacs,屡次失败 vi下的常用的几个操作,然后找出emacs对应操作就会简单的多了 VI EMACS -- ----- Right one column k ^f Right one word w Esc,f Left one word b Esc,b Next sentence ) Esc,e Previous sentence ( Esc,a Save file :w ^x,^s Delete paragraph d} Esc,x,kill-p[TAB],[RET] Edit a new file :ename ^x,^f,name RegEx search for "foo" /foo Esc,^sfoo Repeat search n ^s,[RET] Exit :q or QQ ^x,^c Save and Exit :x ^x,^s,^x,k,[RET] Repeat last search n ^s,[RET] Paste from clipboard p ^y Delete 7 lines 7dd ^a,Esc,7,^k Undo u ^x,u or ^/ Change a letter to "x" rx ^d,x Go to line 6 :6[RET] Esc,<,Esc,5,^n ..or 6G Esc,x,goto-l[TAB][RET],6[RET] 另外和bash里面的几个快捷键一样: 到行首:^a 到行尾:^e 删除行: ^k 粘贴:^y undo: ^x u 参考: http://www.grok2.com/vi-emacs.html http://www.io.com/~dierdorf/emacsvi.html <http://www.cs.rutgers.edu/LCSR- Computing/some-docs/emacs-chart.html> http://www.wlindley.com/gnu/vi.htm ...

June 8, 2009 · notsobad

PDA 网站

国内的pda和智能手机网站: tompda maxpda pdafans hipda 我现在有的,palm tx, bb 7230, _Dopod D700 使用下来,还是palm的系统速度快,操作方便 _

June 7, 2009 · notsobad