您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 05——表格格式范本
19.4ActionScript中的语句、表达式和运算符语句、表达式和运算符是在程序开发中经常使用的术语。那么,到底什么算是表达式,怎样才算语句,运算符都有哪些?本节就将讨论这些问题。19.4.1语句、表达式和运算符的关系可以这样来描述三者的关系:语句是完整的“代码的句子”,它是完整的一句话,可以用来做某些事情。而表达式更象是不完整的只言片语,可比作短语或词组,因为它们自身不能做任何事情,而是被用在语句中。表达式在被求值时会产生一个值。例如:如果你求值表达式“慢得象蜗牛”,你将得到一个实际的值(可能是每小时1米)。这与在Flash中的工作一样—表达式price/2将产生一个值。而运算符,作为一个表达式的一部分,是用来指定如何组合、比较或修改表达式值的字符。运算符在其上执行运算的元素被称为操作数,运算符可以在一个或多个操作数上执行某个运算。例如:“加”运算符(+)在两个数字(操作数)上执行相加的运算。表达式2+2将产生一个值(4)。最后,语句sum=2+2;做了一件把值4赋给了变量sum的事情。OK,现在我们已经知道了这些术语的含义,可以仔细的探究它们了。19.4.2算术运算符让我们关注这些执行简单的算术运算的运算符。这些运算符不会改变它们的操作数并且(当基于数字操作数执行操作时)你总能得到你期待的结果。运算符执行的运算+加法。即对两个数字操作数执行相加的运算。当两个操作数中至少有一个是字符串时,Flash会试图把另一个也转换成字符串,然后把两个字符串串联成一个字符串。-作为二元运算符时(简而言之,使用两个操作数),它将对两个数字操作数执行相减的运算;作为一元运算符时(基于一个操作数),通过将它放置到一个操作数的前面,它将产生操作数颠倒符号后的结果。如果操作数是正的,则结果将是负的。如果操作数是负的,则结果将是正的。*乘法。即对两个数字操作数执行相乘的运算。/除法。即对两个数字操作数执行相除的运算。%求模。即对两个数字操作数执行求模的运算。这会产生第一个数字除以第二个数字的余数。例如:20%7将产生6。除此之外,还有两个运算符(++和--)也执行简单的算术操作。但因为它们都改变了各自的操作数,因此我决定在本节后面的“赋值运算符”部分中讨论它们。尽管你可以借助Flash内建的Math类执行许多额外的数学运算(它们将在第二十四章中进行讨论),但你不要低估这些简单的运算符在表达式中的作用。当你查看下面的例子时紧记两件事情:第一,所有变量的值都假定已经事先被设置为数字,第二,这些仅仅是表达式,因此,就它们自身而言,它们不能做任何事情。平均数:sum/total一半:full/2中间点:lowest+((highest-lowest)/2)打折时的价格:price-(price*discount)秒(已知毫秒):milliseconds/1000尽管我没有为求模(%)运算符提供任何例子—但实际上它是你可以得到的最具威力的运算符中的一个。它看上去似乎相当的乏味,仅仅是一个余数而已。但考虑你如何来判断某个数字是否是一个偶数—它应该能够被2整除。或者说,当它被2除时,余数应该是0。类似的,要检查某个数字是否能够被3整除,只需要看看当它被3除时,是否没有余数即可。求模的用武之地就在这里。如果你使用anyNumber%2并且发现表达式的结果为0,则你就可以知道这个数字是偶数。19.4.3比较运算符比较运算符被用于编写求值结果为真或假的表达式中。如果你还记得表达式通常位于一个更大的语句中的话,你就会理解为什么需要这样的表达式了。例如:就单词“true”本身而言,它没有任何意义。然而,一个完整的有一定意义的语句可能象这样“如果你的矫正视力达到1.0,那么你就可以学开车。”表达式“如果你的矫正视力达到1.0”的求值结果不是true就是false。要使这个语句变得更明确些,你可以说“如果表达式‘你的矫正视力达到1.0’为真,则你就可以学开车。”这个例子是一个条件语句。这样的语句将在本章后面的“控制程序的流程”中详细的讨论。比较运算符就其使用形式而言很容易理解。所有这些运算符都需要两个操作数,它们的构成形式是“第一个操作数运算符第二个操作数”(就象124,在这里12是第一个操作数,是运算符,4是第二个操作数)。让我们看看所有这些运算符。运算符执行的运算大于。即当第一个操作数大于第二个操作数时产生真,否则产生假。小于。即当第一个操作数小于第二个操作数时产生真,否则产生假。=大于或等于。即当第一个操作数大于或等于第二个操作数时产生真,否则产生假。=小于或等于。即当第一个操作数小于或等于第二个操作数时产生真,否则产生假。==等于。即当第一个操作数与第二个操作数相等时产生真,否则产生假。===严格等于。即当第一个操作数与第二个操作数严格相等时产生真,否则产生假。!=不等于。即当第一个操作数与第二个操作数不相等时产生真,否则产生假。!==严格不等于。即当第一个操作数与第二个操作数严格不相等时产生真,否则产生假。记住,你使用这些运算符编写的表达式的结果总是不是真(true)就是假(false)。简单的说,它们除真或假外不能产生任何东西。假并不意味着不好,而恰恰可能是非常好的。一个象这样的表达式2512是不合理的—它的求值结果恰好就是假。用比较运算符构成的表达式通常在条件或循环语句中用作条件判断。例如:if(iq150){trace(恭喜,你简直就是天才!)}else{trace(抱歉,你的智商还没有达到天才级。)}有趣的是尽管真和假是布尔数据类型的两种可能的变化。然而,你可以在表达式中使用它们,就好像它们是数字一样。真是1而假是0。例如:如果变量timesCheated大于1,则表达式score*(timesCheated1)的求值结果为0,不管score的值是多少。简单的说,timesCheated1这个部分的求值结果不是true就是false(1或0)。如果timesCheated是0,则这部分就是true,而score就被1乘,结果就还是score。如果timesCheated大于或等于1,则这部分就是false,而score就被0乘,结果就是0。比较运算符不仅可以用于数字的比较,也可以用于字符串的比较。当把比较运算符用于字符串的比较时,运算符会根据两个字符串中左起相对应的字符的ASCII码的值的大小进行比较,并返回结果true或false。如果两个字符串的头两个字符的ASCII码值相等的话,则会继续比对两个字符串左起的第二个字符,以此类推……,直到比出结果,或以字符更少的那个字符串因再没有字符可比而结束。让我们看下面的两个字符串比较的例子:trace(ab);输出为false。因为字符a的ASCII的值为97,b的ASCII的值为98,所以比较结果为false。trace(acab);输出为true。因为第一个字符串中的左起第一个字符和第二个字符串中的左起第一个字符的ASCII值相等,因此,继续将第一个字符串中的左起第二个字符和第二个字符串中的左起第二个字符的ASCII值进行比较,而c的ASCII值大于b,所以比较结果为true。需要清楚地是,要进行字符串的比较,两个操作数必须都是字符串才行。如果其中一个为数字,而另一个是字符串,则Flash会试图把这个字符串转换为数字,如果能转换成功(假如字符串是由数字构成的话),则进行两个数字的比较,否则,编译器会扔给你一个undefined。trace(51);//将输出true。因为字符串1将被转换成数字1,然后进行比较,结果为true。trace(5a);//将输出undefined。因为字符串a无法将被转换成数字。对于进行数字比较而言,两个操作数完全可以是对象的属性,就像这样:functionPerson(age){this.age=age;}APerson=newPerson(2);BPerson=newPerson(3);trace(BPerson.ageAPerson.age);//将输出true。很值得谈谈的是==、!=、===和!==四个等于运算符,你不仅可以对数字、字符串、布尔值这些原始数据类型执行这些有关是否相等的运算,你还可以对对象这种引用数据类型执行此类运算。当对引用数据类型进行是否相等的比较运算时,只有当两个引用数据类型引用的是同一个对象时,这两个引用数据类型才被认为是相等的。下面的例子中两个对象被认为是相等的:functionPerson(age){this.age=age;}APerson=newPerson(2);BPerson=APerson;CPerson=APerson;trace(BPerson==CPerson);//将输出true;下面的例子中两个对象被认为是不相等的,尽管它们的属性值是相等的:functionPerson(age){this.age=age;}APerson=newPerson(2);BPerson=newPerson(2);trace(BPerson==APerson);//将输出false。通过前面的trace(51)的例子,我们已经知道在Flash中,当进行比较的操作数的数据类型不同时,Flash会试图对操作数的类型进行转换,以便使其二者能够进行比较。但这会使得当你使用==运算符进行相等比较时无法确切的知道被比较的二者的数据类型是否也相同。要想进行严格的不进行自动数据类型转换的相等比较,你需要使用===或!==运算符。当使用严格等于或严格不等于运算符时,只有当两个操作数的数据类型和值都完全相等时,才被认为是相等的。让我们看下面的例子:trace(true==1);//输出为true。因为经类型转换后二者相等。trace(true===1);//输出为false。因为二者类型不同。再看下面的例子:trace(5!=5);//输出为false。因为经类型转换后二者相等。trace(5!==5);//输出为true。因为二者类型不同。注意,等于运算符由两个等号构成。单独一个等号(=)是一个完全不同的运算符。单个的等号执行一个赋值操作(就象你将在本节中后面小节看到的那样)。简而言之,=左边的变量被赋予=右边的表达式的值。这实际上是创建了一个完整的语句(因为它做了某些事情)而不是象==运算符所做的那样创建的是一个表达式。这样做不仅仅意味着左边的变量被改变,而且如果你的目的是创建一个将产生真或假的表达式的话,则你将发现结果将总是产生真。简单的说,age=18;将18作为值赋给age,而这个语句的求值结果将是真。相反,age==18将产生true或false(依赖于age变量的值)。另外,当你使用==时,age的值不会被改变。第一个事例说“age现在等于18”,而第二个事例说“age等于18吗?”。19.4.4字符串运算符我们已经知道,当对两个操作数使用+运算符时,如果这两个操作数中至少有一个是字符串,Flash会试图把另一个也转换成字符串,然后把两个字符串串联成一个字符串。就像下面的例子说明的那样:a=你好,;b=世界!;c=a+b;//现在变量c保存着字符串你好,世界!。再如:trace(5+5);//输出为55。因为数字5会被转换成字符串5,两个字符串串联结果为55。除了+运算符可以应用于字符串外,你也可以将比较运算符应用于字符串,其运算方式我在前一小节中已经讲解过了,在此不再赘述。19.4.5逻辑运算符逻辑运算符的操作数是一个或两个布尔值,运算的结果也是一个布尔值。逻辑运算符“与”和“或”使用两个操作数,而“非”使用一个操作数。逻辑运算符扩展了比较运算符的能力,从而可以让你做出象“age大于14且小于18”(在这个事例中“且”就起到逻辑运算符的作用)这样的复合表达式。你实际上是在比较两个表达式,但每一个表达式的结果都必须是真或假。如果你是在数字上使用这些逻辑运算符,则除0之外的任何数字都被认为是真。运算符执行的运算&&逻辑“与”。如果两个操作数都是真,则产生真,否则为假。||逻辑“或”。如果两个操作数中任何一个(
本文标题:05——表格格式范本
链接地址:https://www.777doc.com/doc-1059195 .html