7.5.5 WMLScript比较操作符 - 编程吧

上一篇 | 下一篇

7.5.5 WMLScript比较操作符

发布: 2007-7-20 13:51 | 作者: 佚名 | 来源: 转载 | 查看: 9次


7.5.5  比较操作符
比较操作符可以把操作数进行比较,然后返回一个逻辑值,表明这个比较操作的结果是否为真。比较操作符的操作数可以是数值类型或者字符串类型的数据。比较操作符也常被称为关系运算符。例如,下面两条语句就包含有比较操作符:

var res = (myAmount > yourAmount);

var val = (( 1/0) == invalid);        // val = invalid

WMLScript支持的比较操作符共有6种,下面就分别介绍一下。

(1) ==。即等于操作符,它可以比较两个操作数是否相等。如果两个操作数相等,则返回true,否则返回false。

例如,对于3==3.0的比较,返回结果为true;而对于3==4的比较,返回结果为false。

(2) !=。即不等操作符,它可以比较两个操作数是否相等。如果两个操作数相等,则返回false,否则返回true。

例如,对于3!=3.0,返回结果为false;对于3!=4,返回结果为true。

(3) >。即大于操作符。其运算规则是,如果左操作数大于右操作数,则返回true,否则返回false。

例如,对于3>2,返回结果为true;对于3>3,返回结果为false。

(4) <。即小于操作符。运算规则是:如果左操作数小于右操作数,则返回true,否则返回false。

例如,对于3<4,返回结果为true;对于3<3,返回结果为false。

(5) >=。这是大于等于操作符。运算规则是:如果左操作数大于或等于右操作数,则返回true,否则返回false。

例如,对于3>=2,返回结果为true;对于3>=3,返回结果为true;对于3>=4,返回结果为false。

(6) <=。这是小于等于操作符。运算规则是:如果左操作数小于或等于右操作数,则返回true,否则返回false。

例如,对于3<=4,返回结果为true;对于3<=3,返回结果为true;对于3<=2,返回结果为false。

除了数值类型之外,字符串类型也可以进行比较,在比较字符串的过程中,WMLScript会把字符串中的每个字母转换成相应的ASCII码值,然后从第一个字符开始比较两个字符串中相应的字符,根据它们的ASCII码值进行判断。

例如,"hello"=="Hello"的返回结果为false,这是因为左操作数的第一个字符为h,右操作数的第一个字符为H,h的ASCII码值为104,H的ASCII码值为72,从第一个字符开始就不相等了,所以表达式的值为false。

再如,这两个表达式:"hello">"Hello"和"hello">="Hello",它们的返回结果都为true。这是因为左操作数第一个字符的ASCII码值为104,而右操作数的第一个字符的ASCII码值为72,104>72(当然同样104>=72),所以两个表达式的值都为true。

而如果表达式为"came">="come",那么如何比较呢?首先,比较两个操作数的第一个字符,都是c。这样,不能直接判定两个操作数的大小。所以接下来,要比较两个操作数的第二个字符,左操作数为a,右操作数为o,a的ASCII码值为97,o的ASCII码值为111,当然97<111,所以对于这个表达式来说,它的返回结果为false。

在比较字符串中,我们使用得最多的一种情况是判断某个字符串类型的变量是否为空串,假设,我们判断的变量名称为theMessage,那么对于theMessage==""这个表达式来说,如果theMessage为空串,则表达式为true,否则为false。

根据以上的分析和讨论,我们可以比较运算的基本规则:

(1) 对于整型数据,按照整数规则进行比较;

(2) 对于浮点型数据,按照浮点数规则进行比较;

(3) 对于字符串型数据,按照顺序比较字符串中的字符,比较时以字符的ASCII码值为准进行判断;

(4) 对于布尔型数据,true比false大;

(5) 对于无效型数据Invalid,如果只要有一个操作数是invalid,那么整个比较就是invalid。

在比较的过程中,不同类型的数据可能会隐含地发生数据类型转换,具体转换规则我们后面介绍。

7.5.6  其他几种操作符
除了前面介绍的几类操作符,WMLScript还提供了几种比较特殊的操作符,我们这里分别介绍一下。

(1) 数组操作符。WMLScript数组操作符所操作的并不是真正的数组,而是字符串。而且,WMLScript不支持普通的数组。WMLScript标准的String库内的函数都将字符串看作为一个数组,并按照模仿数组的行为对其进行操作,字符串中每一个字符按照从左至右的顺序进行编号,该编号可以像数组下标一样使用。例如:

 

function dummy( ) {

         var str = "Mary had a little lamb";

         var word = String.elementAt (str,4,"");

};

 

其中String.elementAt (str,4,"")就把字符串变量str看作数组进行处理,有关该函数的处理规则我们将在下一章String库函数部分介绍,这里暂不展开。

(2) 逗号操作符。该操作符可以将多个表达式连接在一起,形成为一个表达式。例如:

 

for (a=1, b=100; a < 10; a++,b++) {

  ... 其他语句或函数...

};

 

其中的“a=1, b=100;”和“a++,b++”中都使用了逗号操作符,分别完成了两个表达式的运算。逗号操作符实际上相当于多个表达式的组合,比如“a=1, b=100;”相当于“a=1;”和“b=100;”两个表达式的组合。

在为声明的变量赋值的逗号,或函数调用参数之间的逗号都不是逗号操作符。一般来说,逗号操作符都要使用括号保护起来,而且逗号操作符运算的结果是第二个操作数的结果。例如:

 

var a = 2;

var b = 3, c = 5;            // 其中的逗号不是逗号操作符

var b = 3, c = (a, 3);      // 其中(a, 3)中的逗号是逗号操作符,它运算的结果是第二个操作数,即c=3

myFunction("Name",3*(b* a, c));  // 参数"Name"后面紧邻的逗号不是逗号操作符,而3*(b* a, c)

                                                        // 中的逗号是逗号操作符,其运算结果是取c的值,由于上面

                                                        // 已有c=3,所以3*(b* a, c)最后的结果是3*3=9

 

(3) 条件操作符。条件操作符使用的一般形式是:(condition)?val1:val2,它是WMLScript中唯一的一个三目操作符,有三个操作数,能够根据布尔运算的结果给一个变量赋值。

条件操作符的运算规则是:在condition为true的时候,返回结果为val1;在condition为false的时候,返回结果为val2。例如,如果一个人的年龄大于等于18岁,我们就认为他是一个成人(adult),否则我们就认为他是一个未成年人(youth),这个判断操作可以使用条件操作符来实现:(age>=18)?"adult":"youth"。

条件操作符其实是个if-then-else语句,执行原则是如果condition为true,则取val1,否则取val2。

(4) typeof操作符。由于WMLScript支持的数据类型有整数型、浮点数型、字符串型、布尔型和无效型,所以表达式的判断类型也不外这么几种。有时我们需要判断表达式的类型,这时就可以使用typeof操作符来操作。该操作符可以通过返回一个整数来表示给定表达式的类型。其运算规则是:表达式为整数型,则返回0;表达式为浮点数型,则返回1;表达式为字符串型,则返回2;表达式为布尔型,则返回3;表达式为无效型,则返回4。

typeof操作符的返回结果只有整数型,它不会再将结果自动转换为其他数据类型。

例如,假设str = "123",现求mytype = typeof str。由于str为字符串,所以表达式类型为字符串型,故myType = 2。

(5) isvalid操作符。该操作符用于检测给定表达式的有效性。如果表达式是有效的,那么返回值就是true,否则就是false。isvalid操作符的返回结果只有布尔型,它也不会再将结果自动转换为其他数据类型。

例如,str = "123",

此新闻共有2页 1 2

字号: | 推荐给好友

 

评分:0

我来说两句

seccode