WML Script是属于无限应用协议WAP应用层的一部分使用它可以向WML卡片组和卡片中添加客户端的处理逻辑目前最新的版本是版WML Script是在欧洲计算机制造商协议会制定的ECMAScript脚本语言的基础上经过修改和优化而指定的它能够更好的支持诸如移动电话类的乍带宽通信设备在WML编程中使用WML Script可以有效的增强客户端应用的灵活性而且我们也可以把WML Script作为一个工具使用开发出功能强大的WAP网络应用和无限网页本章我们将详细讲解WML Script编程的基础预法制时如基本规则变量预数据类型操作赋予表达式等为了叙述上的简便以后我们将WML Script简称WMLScript WML 程序中调用WML Script函数 经过前两章的学习熟悉C语言的读者可能会认识到WML 的函数功能逻辑运算功能等都是十分有限的而WMLScript提供了丰富的函数功能我们在WAP应用开发可以使用WMLScript来增强WML编程因此WMLScript成为扩展WML编程能力的主要开发工具 WMLScript的主要优点及其字节码解释器 WMLScript具有一套定义好的字节码和一个解释器参考结构无线网络传输中WMLScript的数据均以二进制格式进行传输所以用户可以使用乍带宽通信信道从而能够保持客户端手机只需要最小限度的内存ECMAScript修改后得到的WMLScript能够更快更小更容易的编译程序为字节码形式所有这些特点是WMLScript具备了WML所不能具备的很多优点和功能 使用WMLScript的主要优点 WMLScript的设计宗旨是为WMLScript系统提供一般的脚本处理能力使用WMLScript我们可以进一步补充基于XML的WML语言的编程功能开发针对乍带宽的网络应用及内容如文本图像选择列表等我们可以使用简单的格式编写出更灵活和更具可读性的用户界面WMLScript具备的WML所不能具备的优点和功能主要包括如下几个方面 ()检查用户输入的合法性 ()扩展用户浏览器的功能比如允许程序员开发手机的电话呼叫发送短信息存储电话号码管理电话簿或SIM卡等 ()生成用户端的确认提示警告信息或操作对话框并使之快速显示在浏览器上 ()在用户浏览器的更改后能够对浏览器端的软件和参数进行扩展与配置 ()最大程度克服客户端的乍带宽通信连接限制并提供丰富的程序功能 ()补充WML并使之实现针对微型移动终端设备的多种服务如支持高级用户界面增加客户端智能型提供用户浏览器外围功能的访问能力以及在服务器与客户端浏览传输数据是减少带宽占用等 WMLScript的字节码解释器 在WMLScript的字节码解释器解释之前WMLScript语言编写的文本格式的程序将被首先编译为二进制格式的代码编译时编译器通常先将WMLScript程序分成若干个编辑单位每个单位的程序都包含一定数量的语句行和WMLScript函数然后WMLScript的编译器将按照这些编译单位逐一将WMLScript程序作为输入内容而把对应的字节码作为输出内容当用户通过WAP手机调用WMLScript程序时编译器的编码功能即被激活执行 WMLScript基本规则 WMLScript在许多基本规则方面沿用了WML的做法不过由于WMLScript是以C语言为蓝本而指定的所以它的语法特征和C语言非常相像如果大家对C语言比较熟悉那么学习和掌握这部分内容应当是比较容易的 WMLScript与URL 与WML一样WMLScript也沿用了WWW和HTML访问资源的URLHTTP等规范并扩大了URL使用的范围在WMLScript中不仅超链接文件路径即文件名可以作为URL处理外部函数访问控制信息等也可以作为URL处理 为此WMLScript采用了WML的变通方法即改进HTML命名资源为值的方式采用程序段锚点(Fragment Anchor)的形式来处理资源定位程序段锚点根据文档URL规则进行定义并按照程序段标识符前加井字号(#)的方式书写使用程序段锚点WMLScript程序可以在WMLScript编译单位内可任意指定的函数并可在调用该函数的同时传递所需的参数 词法结构 WMLScript编程中的词法结构并不复杂我们下面就从大小写敏感空格换行注释即保留字等方面讲解相关的具体规则 ()内容类型WMLScript的内容类型主要针对文件形式和二进制形式两种情况类型结构可以在服务器端进行指定具体形式为 文本形式text/vndwapwmlscript; 二进制形式application/vndwapwmlscriptc 具体指定方法我们在第章已经介绍过这里不再重述 ()大小写敏感WMLScript是一种大小写敏感的脚本语言它所设计的各种关键字变量和函数名都必须合理的使用大小写 ()空格和换行一般情况下WMLScript程序值形式将忽略所有的空格制表符合换行符等但如果把这些特殊字符通过代码进行表述或者作为字符串进行处理时WMLScript将不再忽略它们了如字符串Oct中含有空格该空格在执行时就不会被忽略它与不含空格的字符串Oct是不同的 ()注释与WML编程一样在WMLScript脚本程序中也可以加入注释内容注释内容不被程序执行且注释不能嵌套WMLScript的注释方法有两种 其一行注释即使用双斜行号(//)引导以一行内容这一行内容全部作为注释内容如 //这是以行注释由双斜槓号开始到结束都是注释 其二块选择即以符号/*开始而以符号/*结束的期间所有内容都是注释内容如 /*这就是块注释加在中间的内容就是注释内容*/ ()数据类型与直接编码WMLScript允许将种类型的数据直接编码并可嵌套并可嵌如在程序之中直接编码的中数据类型为整数浮点数字符串和布尔值 另外无效性值也可直接编码 整数当以十进制十六进制或八进制方式使用整数时可对这类整数进行直接编码 编程序时十进制的数字均不以开头只包含~的数值串十六进制的数据以OX或者Ox开头只包含~a~f或者A~F的字符串八进制的数均以开头只包含~的数字串 浮点数浮点数通常定义为含有小数点的数字可以包含小数和指数部分浮点数的形式较多可以使十进制的整数或浮点数可以是分数也可以是指数但一个浮点数必须至少有一个数 指数是以e或E开头后面跟着一个整数指数是以为底幂例如e时的零次幂例如e时的另次幂e时的负次幂集等于指数可以带符号正好( )或者减号()它们分别代表是正指数和负指数 字符串字符串是指定义在成对的双引号()或单引号( )之间的内容 由于WMLScript只允许使用成对的双引号或但引号来定义字符串所以程序中使用一个单引号或一个双引号时就会出现编译错误 考虑到有些特殊字符不能在字符串中直接显现出来所以WMLScript提供了转译序列来表示这些特殊字符 布尔型它只是ture和false两个数值用于表示WMLScript中的真值或假值布尔型数据可参与异或等运算具体规则我们后面介绍 无效型也称为空类型它是WMLScript支持的一个表示无效值的量以invalid表示该两与C语言中的NULL类似 保留字WMLScript中定义有一个保留字集合含有一些表示特殊意义的单词这些次不能另外定义也不能最为其他标识符WMLScript中的保留字如下 acces http agent if break isvalid continue meta header div name div= path domain return else typeof while equiv url extern use for user function var 另外WMLScript还为将来的版本预留了一些保留字主要有 case finally catch import class private const public debugger sizeof default struct do super enum switch export throw extends try WMLScript还有一些没有使用的保留字 delete null in this lib void new with 标识符WMLScript的标识符可以指定或命名种元素变量函数和标注标识符不能以数字开头但能一段下划线()开头而且标识符不能是WMLScript的保留字例如timeOfDayspeed qualityHOME_ADDRESS_myName__varO等都是合法的标识符而以数字或非短下划线的特殊符号开头的字串以及保留字等都属于不合法的标志赋如whileforifmy~name$syspiecstakethis等 由于WMLScript是严格区分大小写的所以字母相同但大小写不同的标识符不是同一个标识例如Work和work就是不同的标识符 名称空间WMLScript提供了比较自由的名称空间同一标识符可以同时用作不同的目的例如作为某一函数名称的标识符还可以同时用作变量名函数参数程序标注等使用时他们的属性或值等并不相互影响在下面的简单的例程中myTest这一标识符即用作了函数名又用作了变量名函数参数名函数参数名常量名显然WMLScript的这一特定为我们编写程序提供了很大的方便 WMLScript程序的基本书写规则 WMLScript程序的基本书本写规则 程序由若干语句或函数组成函数有由若干语句组成 每个完整的语句后面必须加上分号()语句关键词语操作数之间必须有空间分号()是WMLScript程序的组成部分 函数体之间必须使用成对的花括号({ })括起来而且函数结束时在右花括号(})的后面还要加上分号()函数说明部分如函数名函数类型函数参数等要放在花括号({})的前面 有些语句可能也需要实用花括号({ })办含内容这类语句通常也可以放在函数中所以花括号({ })是可以嵌套的 当然不同的语句参数变量等元素在声明和书写时可能还有一些更细的要求具体我们后面介绍这些元素是再专门给出 变量与数据类型 变量即数据类型是所有编程语言的概念和组成部分WMLScript对此也不例外它对其变量使用方法和数据类型定义方法给出了详细的规定变量通常与某数据之相对应我们可以给变量赋值并可在程序执行中改变变量的值下面我们讲解WMLScript有关变量与数据类型的详细规定 变量及其声明 变量是在WMLScript脚本程序中具有值的符号名或说标识符使用变量可以存储和改变程序中需要的数据与C语言不同的是WMLScript仅支持函数内定义的变量或用于传送数的参变量 变量使用前必须进行声明也就是定义变量即指定变量的名字声明变量的关键字是var它的后面根上作为变量名的合法的标识符并于最后加上分号()即完成一个量的声明声明变量是可以使用var一次声明多个变量名相邻变量之间使用都号()间隔 一般情况下我们在给变量命名的时候都希望能够使用有意义的变量名例如当需要使用一个变量表示一本书的价格时虽然将变量命名为j或book都没有什么错误但若能命名为bookPrice则会是的WMLScript脚本程序具有更好的可读性可以方便编程人员进行脚本的编写和调试工作而且由于WMLScript在给变量命名是不能使用保留字所以考虑到避免由于一时的疏忽时变量名欲保留字发生沖突我们建议使用多个单词组合在以其作为一个变量的名称这是一个比较好的解决办法例如如果要定义一个变量来存储的一本书的价格那我们可以不妨使用bookPrice或者book_price作为变量的名称这样一方面可以时变量显得更加清晰另一方面也可以避免变量与保留字的沖突问题 以上只是我们对于变量命名的建议并不是强制性的要求用户完全可以不按照我们的要求来做只要遵守WMLScript对于标识符命名的要求就可以了但养成良好的编程风格不论是对编程人员还是对脚本编写人员来说都是十分有意义的 变量的作用域与生命期 一个变量的作用域是指在程序中能够引用这个变量的一段代码由于WMLScript仅支持函数内定义的变量所以WMLScript变量的作用与通常就是定义它们的那个函数在该函数之外变量不再发挥直接作用 变量的生命起始值从变量声明开始到失效为止变量的生命期也被称为变量的持久期存活期一个变量在定义它的整个函数内都是有效的函数内的任何语句块都不会削减变量的生命期或限制变量的作用域 如果一个变量未经生命就直接使用或声明过后再次声明都会破坏变量的生命期前一种情况会导致变量没有开始声明期即没有生命而后一种情况则导致变量声明期没有结束以前就重新赋予声明期即让它多次降生这都会导致变量无效使用下面函数中的变量使用就说明了这一问题 function foo(){ x=;//错误变量使用前没有声明改变量还没有声明 var xyz; y=x ; var zd =invalid if(x){ var(y);//错误这一变量已经声明这里是重复声明 } } 变量的使用 WMLScript的变量只能在定义它的函数内使用使用时需要声明变量声明变量是可以同时对变量赋值甚至对变量进行运算例如下面的简单函数就说明了变量的这种灵活的使用方法 function ourAge(){ var myAge=; var yourAge=; var ourAge=myAge yourAge; return ourAge; }; 使用变量时可通过调用变量名字的形式来实现上面例子中的var ourAge=myAge yourAge;一句通过调用变量名变量ourAge对变量myAge和变量yourAge实行了求和操作 变量类型与数据类型 WMLScript是一种弱类型的语言及其变量没有确定的类型WMLScript变量的类型有改变量所赋数据的类型决定并根据数据类型的改变而改变WMLScript只支持内部定义的数据因此我们编写程序是无需指定WMLScript变量的类型WMLScript减根据变量而赋数据的类型自动进行匹配由于WMLScript的数据类型共有整数浮点数字符串布尔型和无效型五种类型所以WMLScript变量的类型所能匹配的也就是这五种类型 变量值域 由于变量类型尤其所赋数据的类型决定所以变量值与域其所赋数据的可取范围等价的下面的我们就给出整数浮点数字符串和布尔型的区值范围以参照确定应类型变量的值域 整数的范围WMLScript支持的整数是位的也就是说整数的区值范围是从到 我们可以在程序运行期是用Lang函数来取得这些值如 LangmaxInt(); //获取最大的整数 LangmaxInt(); //获取最小的整数 浮点数的范围它是指WMLScript浮点数的精度所能表示的最小和最大数值WMLScript支持为的单精度浮点数其最大至时E 最小的非零的数是E或更小(按照正常的精度) 我们可以使用浮点Float函数库在程序运行其取得这些数值 FloatmaxFloa(); //获得WMLScript所支持的最大浮点值 FloatmaxFloa(); //获得WMLScript所支持的最小浮点值 对于运行期出现的一些特殊的浮点数WMLscript将按照下述规则处理 其一如果操作结果是一个不能被单精度浮点数所能表示的数值那么该结果将被认为是invalid即无效值 其二如果操作结果发生下溢出那么结果将作为处理 其三负的零和正的零是完全相等的 字符串的范围任何由于字母数字或特殊字符组成的符号串都是WMLScript中定义的有关字符串的操作或String库中的函数控制字符串 布尔型数据的范围布尔型数据只有ture和flase两个取值这也WMLScript脚本程序中具有值的符号名或说标识符使用变量可以存储和改变程序中需要的数据与C语言不同的是WMLScript仅支持函数内定义的变量或用于传送数的参变量 变量使用前必须进行声明也就是定义变量即指定变量的名字声明变量的关键字是var它的后面根上作为变量名的合法的标识符并于最后加上分号()即完成一个量的声明声明变量是可以使用var一次声明多个变量名相邻变量之间使用都号()间隔 一般情况下我们在给变量命名的时候都希望能够使用有意义的变量名例如当需要使用一个变量表示一本书的价格时虽然将变量命名为j或book都没有什么错误但若能命名为bookPrice则会是的WMLScript脚本程序具有更好的可读性可以方便编程人员进行脚本的编写和调试工作而且由于WMLScript在给变量命名是不能使用保留字所以考虑到避免由于一时的疏忽时变量名欲保留字发生沖突我们建议使用多个单词组合在以其作为一个变量的名称这是一个比较好的解决办法 例如如果要定义一个变量来存储的一本书的价格那我们可以不妨使用bookPrice或者book_price作为变量的名称这样一方面可以时变量显得更加清晰另一方面也可以避免变量与保留字的沖突问题 以上只是我们对于变量命名的建议并不是强制性的要求用户完全可以不按照我们的要求来做只要遵守WMLScript对于标识符命名的要求就可以了但养成良好的编程风格不论是对编程人员还是对脚本编写人员来说都是十分有意义的 变量的作用域与生命期 一个变量的作用域是指在程序中能够引用这个变量的一段代码由于WMLScript仅支持函数内定义的变量所以WMLScript变量的作用与通常就是定义它们的那个函数在该函数之外变量不再发挥直接作用 变量的生命起始值从变量声明开始到失效为止变量的生命期也被称为变量的持久期存活期一个变量在定义它的整个函数内都是有效的函数内的任何语句块都不会削减变量的生命期或限制变量的作用域 如果一个变量未经生命就直接使用或声明过后再次声明都会破坏变量的生命期前一种情况会导致变量没有开始声明期即没有生命而后一种情况则导致变量声明期没有结束以前就重新赋予声明期即让它多次降生这都会导致变量无效使用下面函数中的变量使用就说明了这一问题 function foo(){ x=;//错误变量使用前没有声明改变量还没有声明 var xyz; y=x ; var zd =invalid if(x){ var(y);//错误这一变量已经声明这里是重复声明 } } 变量的使用 WMLScript的变量只能在定义它的函数内使用使用时需要声明变量声明变量是可以同时对变量赋值甚至对变量进行运算例如下面的简单函数就说明了变量的这种灵活的使用方法 function ourAge(){ var myAge=; var yourAge=; var ourAge=myAge yourAge; return ourAge; }; 使用变量时可通过调用变量名字的形式来实现上面例子中的var ourAge=myAge yourAge;一句通过调用变量名变量ourAge对变量myAge和变量yourAge实行了求和操作 变量类型与数据类型 WMLScript是一种弱类型的语言及其变量没有确定的类型WMLScript变量的类型有改变量所赋数据的类型决定并根据数据类型的改变而改变WMLScript只支持内部定义的数据因此我们编写程序是无需指定WMLScript变量的类型WMLScript减根据变量而赋数据的类型自动进行匹配由于WMLScript的数据类型共有整数浮点数字符串布尔型和无效型五种类型所以WMLScript变量的类型所能匹配的也就是这五种类型 变量值域 由于变量类型尤其所赋数据的类型决定所以变量值与域其所赋数据的可取范围等价的下面的我们就给出整数浮点数字符串和布尔型的区值范围以参照确定应类型变量的值域 整数的范围WMLScript支持的整数是位的也就是说整数的区值范围是从到 我们可以在程序运行期是用Lang函数来取得这些值如 LangmaxInt(); //获取最大的整数 LangmaxInt(); //获取最小的整数 浮点数的范围它是指WMLScript浮点数的精度所能表示的最小和最大数值WMLScript支持为的单精度浮点数其最大至时E 最小的非零的数是E或更小(按照正常的精度) 我们可以使用浮点Float函数库在程序运行其取得这些数值 FloatmaxFloa(); //获得WMLScript所支持的最大浮点值 FloatmaxFloa(); //获得WMLScript所支持的最小浮点值 对于运行期出现的一些特殊的浮点数WMLscript将按照下述规则处理 其一如果操作结果是一个不能被单精度浮点数所能表示的数值那么该结果将被认为是invalid即无效值 其二如果操作结果发生下溢出那么结果将作为处理 其三负的零和正的零是完全相等的 字符串的范围任何由于字母数字或特殊字符组成的符号串都是WMLScript中定义的有关字符串的操作或String库中的函数控制字符串 布尔型数据的范围布尔型数据只有ture和flase两个取值这也是布尔型变量的两种数值我们可以使用布尔型数据取初始化或指定某一变量的数值或将布尔值变量写入一个需要布尔值作为参数的语句布尔值可以是数值运算的结果也可以是逻辑运算的结果 下面就是定义布尔型变量并赋初值的例句 var truth=truth; var lie=!truth; 操作符与表达式 在WMLScript中表达式可以把变量常量与操作符结合起来经过运算能够产生一定的运算结果表达式运算后产生的结果可以是整数型浮点数型字符串型或布尔型的数据其实对于表达式我们并不陌生例如 就是一个简单的表达式 WMLScript的表达式主要有两种类型一种是赋值表达式即把数据赋给变量的一种表达式例如myBook=在这个表达式中将 赋给变量myBook同时这个表达式本身也有一个运算结果那就是另外一种是运算表达式它是指产生一个运算结果而不进行赋值操作的表达式例如 就是一个运算表达式在这个表达式运算产生的结果是 但这个表达式并没有把运算结果赋给变量 在表达式运算的过程中表达式中操作一个或这两个数据产生运算的符号做操作符被操作符操作的数据称作操作数在WMLScript中我们会使用到各种操作符下面就对操作符及有关的表达式进行详细讲解 赋值操作符 赋值操作符用于赋值操作即给变量指定所需的数值它能把有操作数的运算结果给做操作数最简单的赋值操作符就是=例如x=就是将赋值给变量x在如以下几行语句都是赋值操作 var=abc; var b=a; b=def; 赋值操作符不需要指定使用对象也不会改变赋值操作符右边变量的数值WMLScript的赋值操作符主要包括以下几种 =用于赋值操作将有操作数赋给左操作 =将有操作数与左操作数进行相见运算然后把运算结果赋值给左操作数例如假设x=那么x =运算后的结果为x= =是比较特别的操作符因为它可以将两个字符串相连所以 =操作符也可以对字符串进行操作然后将连接后的字符串赋给左操作数例如假设x=Happy那么x =new Year运算后结果是x=Happy New Year =将左操作数简取有操作数然后把运算结果赋值给左操作数例如假设x=那么x=运算后的结果为x= *=将左操作属于有操作符进行相乘运算然后把运算结果赋值给左操作数例如假设x=那么x*=运算后的结果为x= /=将右操作属于右操作符进行相乘运算然后把运算结果赋值给左操作数例如假设x=那么x*=运算后的结果为x= div=拥有操作数处理左操作数然后把运算结果中的整数部分赋值给左操作数例如x=那么xdiv=运算后的结果为x= %=功能是求余数并赋值用右操作数除以做操作数最后把运算得到的余数值给操作数例如假设x=那么x%=运算后的结果为x= <<=功能是带符号左位移并赋值即将左操作和右操作数进行左位移操作在将结果赋给左操作数 >>=可将左操作和右操作进行右操作进行补零右位移操作在将结果赋给左操作数 数学运算操作符 数学运算操作符可以对数值类型的操作数进行运算然后返回一个数值类型的运算结果 这是加运算操作等它对应着数学运算中的加法运算例如表达式 的运算结果为 加操作符还可以对字符串类型的操作数进行运算然后将两个字符串相连起来作为运算 即检操作符对应着速学运算中的减法运算例如表达式的运算结果为 同时还是一个取负操作符当它作为取负操作符的是一个操作数取负操作符的功能使返回操作数的相反数 *这是乘操作符它对应着数学运算中的乘法运算例如表达式*的运算结果为 /即除操作符对应着数学运算中的除法运算但WMLScript中的除法运算有些特别在WMLScript中除法运算后的结果是一个浮点数而不想C语言或者Java语言那样在整数进行除法运算式井运算结果强行转化整数在WMLScript中/=而在Jave中/= div这是整除操作符对应着数学运算中的整数运算 运算后的结果一个整数这一点与C语言或者Java语言中的情况是一样的可以在整数进行除法运算式将运算结果强行转换整数 %即取模操作符它对应着数学运算中的取莫运算也就是将两个操作相除返回相除后的余数 取模操作符主要用于判断一个数字是否能被另一个数字整除 ((the Year%==))&&(the Year!=))||(the Year@==) 其中&&代表的是逻辑运算中的与运算||代表的是逻辑运算中的或运算关于逻辑运算我们后面会详细介绍 这是递增操作符它只有一个操作数操作可以在操作符的左边也可以在操作符的右边它所完成的运算操作是将操作数加假设操作数名称为j值为那么 j加然后返回j的值而j 则实现返回j的值然后将j加 在循环中我们常常会用到递增操作符的作用正好相反递减操作完成的运算操作是经操作数减例如假设操作数名称为j值为那么j先将j减然后返回的值而j是先返回j的值然后将j减 位操作符 为操作符在运算实现将操作转化位的二进制数然后对每个操作数分别按位进行运算运算后在将二进制的结果按照标准WMLScript数值类型返回运算结束 &这是为与操作符它可以对两个操作数按位进行于操作其运算规则是 &=&=&=&= |这是位或操作符它可以对两个操作数按位进行或操作运算规则是 |= |=|=|= ^这是唯一或操作符它可以对两个操作按位进行异或操作其运算规则是^=^=^=^= ~这是位非操作符它只有一个操作数可对操作数按位进行非操作运算规则是~=~= <<这是左移操作它可以对左操作数进行向左一位的操作由操作数给定了要移动的位数在移动过程中左操作数的最低为补充 >>这是右移操作符它可以对左操作数进行向右移位的操作由操作数给定要移动的位数在移位的过程中丢弃向右移的位 >>>这是填右移操作符它与右移操作符相似当对证正数进行操作时它们的效果完全相同不同之处在于当进行负整数右移操作时因为负责转化为二进制后最高为所以在进行右移操作后最高位仍然补充而在进行填右移操作时最高为补充的是因此这是负数将转化为正数 逻辑操作符 逻辑操作符可以将布尔类型的表达式组合起来完成逻辑运算操作然后返回逻辑运算的结果——真或假这样就可以完成比较复杂的逻辑判断工作逻辑操作共有种 &&即逻辑与操作符它只有在两个操作数都为ture的时候返回结果为ture在其他情况下返回结果为false或者invalid ||这是或操作符它在两个操作数至少有一个为ture的时候返回结果为ture在其他情况下返回结果为false或者invalid !即非操作符它只有一个操作数当操作数为ture时返回结果为flase返回结果为ture 比较操作符 比较操作符可以把操作数进行比较然后返回一个逻辑值表明这个比较操作的结果是否为真比较操作的操作数可以是数值类型或者字符串类型的数据比较操作符也常被称为关系运算符 WMLScript支持的比较操作符共有种下面被介绍一下 ==即等于操作符它可以比较两个操作数是否相等如果两个操作数相等则返回ture否则返回false !=即不等操作符它可以比较两个操作数是否相等如果两个操作数相等则返回false否则返回ture >即大于操作等其运算规则时如果左操作数大于右操作数则返回ture 是布尔型变量的两种数值我们可以使用布尔型数据取初始化或指定某一变量的数值或将布尔值变量写入一个需要布尔值作为参数的语句布尔值可以是数值运算的结果也可以是逻辑运算的结果 下面就是定义布尔型变量并赋初值的例句 var truth=truth; var lie=!truth; 操作符与表达式 在WMLScript中表达式可以把变量常量与操作符结合起来经过运算能够产生一定的运算结果表达式运算后产生的结果可以是整数型浮点数型字符串型或布尔型的数据其实对于表达式我们并不陌生例如 就是一个简单的表达式 WMLScript的表达式主要有两种类型一种是赋值表达式即把数据赋给变量的一种表达式例如myBook=在这个表达式中将 赋给变量myBook同时这个表达式本身也有一个运算结果那就是另外一种是运算表达式它是指产生一个运算结果而不进行赋值操作的表达式例如 就是一个运算表达式在这个表达式运算产生的结果是 但这个表达式并没有把运算结果赋给变量 在表达式运算的过程中表达式中操作一个或这两个数据产生运算的符号做操作符被操作符操作的数据称作操作数在WMLScript中我们会使用到各种操作符下面就对操作符及有关的表达式进行详细讲解 赋值操作符 赋值操作符用于赋值操作即给变量指定所需的数值它能把有操作数的运算结果给做操作数最简单的赋值操作符就是=例如x=就是将赋值给变量x在如以下几行语句都是赋值操作 var=abc; var b=a; b=def; 赋值操作符不需要指定使用对象也不会改变赋值操作符右边变量的数值WMLScript的赋值操作符主要包括以下几种 =用于赋值操作将有操作数赋给左操作 =将有操作数与左操作数进行相见运算然后把运算结果赋值给左操作数例如假设x=那么x =运算后的结果为x= =是比较特别的操作符因为它可以将两个字符串相连所以 =操作符也可以对字符串进行操作然后将连接后的字符串赋给左操作数例如假设x=Happy那么x =new Year运算后结果是x=Happy New Year =将左操作数简取有操作数然后把运算结果赋值给左操作数例如假设x=那么x=运算后的结果为x= *=将左操作属于有操作符进行相乘运算然后把运算结果赋值给左操作数例如假设x=那么x*=运算后的结果为x= /=将右操作属于右操作符进行相乘运算然后把运算结果赋值给左操作数例如假设x=那么x*=运算后的结果为x= div=拥有操作数处理左操作数然后把运算结果中的整数部分赋值给左操作数例如x=那么xdiv=运算后的结果为x= %=功能是求余数并赋值用右操作数除以做操作数最后把运算得到的余数值给操作数例如假设x=那么x%=运算后的结果为x= <<=功能是带符号左位移并赋值即将左操作和右操作数进行左位移操作在将结果赋给左操作数 >>=可将左操作和右操作进行右操作进行补零右位移操作在将结果赋给左操作数 数学运算操作符 数学运算操作符可以对数值类型的操作数进行运算然后返回一个数值类型的运算结果 这是加运算操作等它对应着数学运算中的加法运算例如表达式 的运算结果为 加操作符还可以对字符串类型的操作数进行运算然后将两个字符串相连起来作为运算 即检操作符对应着速学运算中的减法运算例如表达式的运算结果为 同时还是一个取负操作符当它作为取负操作符的是一个操作数取负操作符的功能使返回操作数的相反数 *这是乘操作符它对应着数学运算中的乘法运算例如表达式*的运算结果为 /即除操作符对应着数学运算中的除法运算但WMLScript中的除法运算有些特别在WMLScript中除法运算后的结果是一个浮点数而不想C语言或者Java语言那样在整数进行除法运算式井运算结果强行转化整数在WMLScript中/=而在Jave中/= div这是整除操作符对应着数学运算中的整数运算运算后的结果一个整数这一点与C语言或者Java语言中的情况是一样的可以在整数进行除法运算式将运算结果强行转换整数 %即取模操作符它对应着数学运算中的取莫运算也就是将两个操作相除返回相除后的余数 取模操作符主要用于判断一个数字是否能被另一个数字整除 ((the Year%==))&&(the Year!=))||(the Year@==) 其中&&代表的是逻辑运算中的与运算||代表的是逻辑运算中的或运算关于逻辑运算我们后面会详细介绍 这是递增操作符它只有一个操作数操作可以在操作符的左边也可以在操作符的右边它所完成的运算操作是将操作数加假设操作数名称为j值为那么 j加然后返回j的值而j 则实现返回j的值然后将j加 在循环中我们常常会用到递增操作符的作用正好相反递减操作完成的运算操作是经操作数减例如假设操作数名称为j值为那么j先将j减然后返回的值而j是先返回j的值然后将j减 位操作符 为操作符在运算实现将操作转化位的二进制数然后对每个操作数分别按位进行运算运算后在将二进制的结果按照标准WMLScript数值类型返回运算结束 &这是为与操作符它可以对两个操作数按位进行于操作其运算规则是 &=&=&=&= |这是位或操作符它可以对两个操作数按位进行或操作运算规则是 |= |=|=|= ^这是唯一或操作符它可以对两个操作按位进行异或操作其运算规则是^=^=^=^= ~这是位非操作符它只有一个操作数可对操作数按位进行非操作运算规则是~=~= <<这是左移操作它可以对左操作数进行向左一位的操作由操作数给定了要移动的位数在移动过程中左操作数的最低为补充 >>这是右移操作符它可以对左操作数进行向右移位的操作由操作数给定要移动的位数在移位的过程中丢弃向右移的位 >>>这是填右移操作符它与右移操作符相似当对证正数进行操作时 它们的效果完全相同不同之处在于当进行负整数右移操作时因为负责转化为二进制后最高为所以在进行右移操作后最高位仍然补充而在进行填右移操作时最高为补充的是因此这是负数将转化为正数 逻辑操作符 逻辑操作符可以将布尔类型的表达式组合起来完成逻辑运算操作然后返回逻辑运算的结果——真或假这样就可以完成比较复杂的逻辑判断工作逻辑操作共有种 &&即逻辑与操作符它只有在两个操作数都为ture的时候返回结果为ture在其他情况下返回结果为false或者invalid ||这是或操作符它在两个操作数至少有一个为ture的时候返回结果为ture在其他情况下返回结果为false或者invalid !即非操作符它只有一个操作数当操作数为ture时返回结果为flase返回结果为ture 比较操作符 比较操作符可以把操作数进行比较然后返回一个逻辑值表明这个比较操作的结果是否为真比较操作的操作数可以是数值类型或者字符串类型的数据比较操作符也常被称为关系运算符 WMLScript支持的比较操作符共有种下面被介绍一下 ==即等于操作符它可以比较两个操作数是否相等如果两个操作数相等则返回ture否则返回false !=即不等操作符它可以比较两个操作数是否相等如果两个操作数相等则返回false否则返回ture >即大于操作等其运算规则时如果左操作数大于右操作数则返回ture |