转自:
http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=59088
第五部分:WML Script脚本程序设计
作为一种编辑语言,WMLScript提供了强大的函数、语句和库功能,以及外部编辑、访问控制等支持,同时对程序运行中可能产生的错误给出了检测手段和具体的解决办法。这些内容属于WMLScript的脚本程序设计知识和进一步的编程规定,我们本章就对此进行详细介绍。
5.1 语句
前面我们学习了变量、操作符和表达式,但仅由这些内容并不能完成某个完整的功能,因为他们不能形成完整的操作或处理程序。变量就如同与严重的单词,表达式如语言中的词组,他们都不能表达一个完整的意思;只有语句,是语言中完整的句子,能够表达完整的意思并实现某个完整的功能。WML Script提供了丰富的语句功能,使用这些语句我们可以在WML的卡片中建立交互功能和其他需要的复杂功能。
在WML Script中,每条语句的后面都需要以一个分号(;)结尾。为了养成严谨的编程风格,建议大家编写脚本时,语句后一定要加上分号(;),这也有助于我们形成一种良好的编程习惯。
WML Script语句的书写和排列格式比较自由。我们可以在同一程序行中连续写上多个语句,也可以把同一语句分成多行排列。WML Script将根据分号(;)来确定语句的具体内容。
WML Script的语句主要包括两类。第一类是基本语句,如空语句、表达式语句、块语句、变量语句和return语句等;第二类是条件语句,如if语句;第三类是循环语句,如while语句、for语句、break语句和continue语句等。下面我们分别讲解这些语句的语法、功能和使用方法。
5.1.1 基本语句
WML Script基本语句主要用于程序格式控制和变量声明,其中有些语句我们已经不太陌生了。
空语句
空语句用于定义一个空的程序行,它没有任何标识符和操作符,也不执行任何操作。它只是以分号(;)结束。其语法格式为:
;
显然,空语句是一种十分特殊的语句。由是我们为了让程序具有更好的可读性,通常在程序中的适当地方加上几个空语句,以起到分隔或突出的作用。例如,下面的几行程序中就含有一个空语句:
str="Hello";
val=25;
;
MyVal=val*val+5;
alert("Hi,Hi!!!");
再如,while语句用于判断一个条件并在条件满足的时候执行相应的任务,但如果希望条件满足的时候什么也不作,那么就可以给它配上一个空语句,使之条件满足的执行空操作:
while(!poll(device));
这实际上是while语句和空语句组成的两条语句。其中的分号(;)在这里就代表了空语句。这两条语句的作用是在poll()函数为真()之前一直等待。
表达式语句
表达式语句用于向变量赋值,或进行数学计算,或进行函数调用。表达式语句也是我们最常用的一种语句,语法格式为:
表达式;
下面几行程序都是合法的表达式语句:
str="Hey"+yourName;
val3=prevVal+4
counter++;
myValue1=counter,myValue2=val3
alert("Watch out!");
retVal=16*Lang.max(val3,counter);
块语句
块语句使用两个花括号({ })包含一个语句集,形成一个语句体。WML Script的许多语句都需要使用块语句来实现语句体,快语句的语法格式为:
{
语句列表;
}
下面的简单程序就是使用块语句的例子:
}
vari=0;
var x=Lang.abs(b);
popUp("Remember!");
}
变量语句
变量语句用于生命变量并可进行变量的初始化赋值。如果用户不赋值,那么WML Script会自动将变量语句生命的变量赋予一个空字符串("")。基本的语法格式为:
var 变量名;
如果像一次生命多个变量,则相邻变量名之间使用逗号(,)间隔,其语法格式为:
VAR 变量名1,变量名2......,变量名n;
如果想在生命变量时同时初始化变量,则可按如下语法格式书写:
var 变量名=初始化
为便于大家更好的掌握变量语句,我们给出一个多出使用该语句的程序:
function count(stu){
var result=0; //声明变量的同时初始化变量
while(str!=""){
var ind=0; //每次循环都初始化一次
// 为退出循环,本块语句内应当提供修改变量str值的语句
};
return result
};
function example(param){
var a=0;
if(param>a){
var b=a+1; //声明b变量的同时使用a变量初始化b变量
}else{
var b=a+2; //声明c变量的同时使用a变量初始化c变量
};
return a; //返回a变量的值
};
注释语句
严格来讲,注释语句在WML Script中还不算是真正的语句,它只是一种前指向的规定。不过它也有严格的语法和标注方法,所以我们这里还是像其他编程语言处理的一样,把WML Script注释方法以语句的形式介绍一下。
注释在程序执行的时候没有任何作用,但是可以用于对程序进行解释,则增强程序的可读性。为了形成良好的编程风格,我们应该养成书写注释的良好习惯,注释有两种表达方式:
(1)通过双斜线注释一行,这样在双斜先后的字符将成为注释而不被执行。该注释行可以单独一行书写,也可以放在其他语句的后面。
例如,可以进行如下所示的注释:
//变量j用于小数每月的天数
j=0; //我们这里将j赋值为0
(2)通过符号“/*”和“*/”来规定注释语句,这种注释方式可以进行多行注释,符号“/*”和“*/”之间的内容就是注释语句。例如,可以进行如下所示的多行注释:
/*我们定义了两个变量:i和j。其中:
i用于描述每年中的月数,
而j用于描述每月的天数*/
j=0; /*我们这里将j赋值为0*/
return语句
return语句主要用在函数体中,在函数结束前,可以通过return语句,把函数处理的结果返回给调用函数的语句。它的语法格式如下:
return表达式;
下面的函数给出了应用return语句的例子:
function square(x){
if(!(Lang.isFloat(x)))return invalid;
return x*x
};
5.1.2 条件语句
在条件语句中,当满足某种条件时 ,就会执行指定的一些代码,而在代码组另外某种条件时,则会执行另外一些代码。WML Script的条件语句就是if...else语句,它的一般表达相识如下:
if(条件){
代码块1
}
else{
代码块2
}
这样,当条件满足时,就执行代码块1;如果条件不满足则执行代码块2。代码块和代码块2中如果只有一个条语句,那么,花括号({ })就可以省略;而如果有多条语句,则必须实用花括号将代码块包括在其中。在if...else语句种,其中的else部分是可选的,也就是说,我们可以使用如下的表达形式:
if(条件){
代码块
}
这样,当条件满足时,就执行代码块,如果条件不满足则什么也不做。
例如,如果我们需要对一个学生的成绩进行判定,如果大于等于60分,那么我们就认为该学生成绩合格了,反之则认为不合格,同时一并将状态记录到变量status种,相应的WMLScript语句如下所示:
if(score>=60) status="pass";
else status="fail";
再如,我们可以通过对天气是否阳光普照(sunShines)的情况进行判断,来给变量myDay赋值,并累计好天气(goodDays)的天数。程序如下:
if(sunShines) {
myDay="Good";
goodDays++;
}else
myDays="Oh well...";
5.1.3 循环语句
使用循环语句可以反复执行某个代码块,直到循环结束条件满足后才停止执行。WML Script中有两种循环语句:for语句和while语句,同时还有两终于循环密切相关的操作语言:break语句和continue语句。
for语句
for语句可以创建一个带条件的循环,它还有3个可选的条件表达式,用于控制循环。这3个条件表达式放在一个括号里,并以分号(;)间隔。for语句的一般语法形式如下:
for(初始表达式;循环条件;递增表达式){
代码块
}
for语句的执行主要包括以下几个步骤:
(1)执行初始表达式。在一般情况下,初始表达式完成的功能是在循环中对循环计数器赋初值。所以在这种意义上,初始表达式也可以采用“var 变量声明列表;”的形式来定义。
(2)判断循环条件。如果循环条件为真(ture),则执行循环体中的语句,即至步骤(3);否则,循环条件为假(false)或者invalid,就结束循环;
(3)执行循环代码。然后,在执行递增表达式。一般情况下,我们在递增表达式中对循环计数器进行处理,最后在返回步骤2执行。
例如,下面的for语句建立了一个循环。初始表达式为定义变量index并付初值0,循环条件为index<100,递增表达式为每循环一次index增加1。当index增加到100时候,循环结束。程序如下:
for(var index=0;index<100;index++){
count+=index;
myFunc(count);
};
while 语句
while语句也可常见一个循环,它的一般语法表达式如下:
while(循环条件){
代码块
}
while语句的执行过程包括以下几个步骤:
(1)判断循环条件是否为真。如果循环条件为真,则执行循环;如果为假或为invalid,则跳出循环。
(2)执行循环中的代码块,然后返回步骤(1)
下面的程序就是使用while语句的简单例子:
var counter=0
var total=0
while(counter<3){
counter++;
total+=c;
};
其中建立的循环仅当变量counter的值小于3时执行,否则就结束循环。
显然,如果循环条件不能为假或为invalid,那么while循环就会无休止的反复执行下去。因此,我们在代码块中一定要有能够改变循环条件的变量,否则,就很有可能会陷入死循环而不能终止程序,下面就是一个死循环的例子:
var x=1;
var y=0;
while(x<=1){
y=x+1;
}
这个程序中,因为变量x的值在循环中不能发生变化,所以循环条件在判断的时候永远为真,所以成为了死循环。因此,对于while语句我们往往使用如下所示的语法形式:
初始表达式
while(循环条件){
代码块
递增表达式
}
这种情况下,while语句的功能和for语句的功能就一样了,不过用while语句编写的程序可读性更强一些。所以我们也可以采用while语句来完成index增加到100的循环。
程序如下:
var index=0
while (index<100){
counter+=index;
myFunc(count);
index++;
};
break语句
为了更好的解决死循环问题,WML Script项大多数编成语言一样提供了break语句。break语句可以使程序执行跳出循环。不论是for语句还是while语句,只要在循环中使用了break语句,那么程序执行到break语句后就立即跳出当前循环,然后继续执行下去。
break语句的予发行时如下:
break;
例如,在下面的函数中我们使用了break语句,它是当index=3时跳出循环。如果不是用该语句,函数中的while循环直到index=6时才可以结束。程序如下:
funcition testBreak(x){
var index=0;
while(index<6){
if(index==3)break;
index++
};
retrun index*x;
;
continue语句
continue语句的功能和break语句的功能看起来有些类似,但实际上却不一样。循环执行时遇到break语句通常是跳出当前循环,但循环执行到 continue语句并不跳出当前循环,而是不执行循环中在continue语句后面的代码块,直接结束循环的本轮运行,然后马上开始下一轮循环的运行。
在while语句的循环中,遇到continue语句后,程序会直接判断循环条件从而开始下一轮循环。在for语句的循环中,遇到continue语句后程序会直接执行递增表达式,然后判断循环条件从而开始下一轮循环。
例如,我们想利用for循环求1到10之间偶数的和,其WML Script语句如下:
var sum=0;
for (var j=1;j<=10;j++){
if(j%2!=0)
continue;
sun+j;
};
在这个例子中,在j%2!=0的情况下,也就是j为奇数的情况下,程序执行continue语句,这时,并没有如同break语句一样跳出循环的运行,而是不执行循环中后面的语句而直接执行递增表达式开始下一轮循环的执行,这样,就可以不将其数j的之类即如总和中。
再如,我们想利用while循环求0到4之间出3以外几个数的和,则可以使用continue语句进行控制。程序如下;
var index=0;
var count=0;
while (index<5){
index++;
if(index==3)
continue;
cont+=index;
};
这以程序中,当index等于3时,“index==3”为真,所以执行continue语句,不再把此时index的值加大count中,而是开始下一轮的循环。
分享到:
相关推荐
### WAP建站进阶——WML标记语言与WMLScript脚本语言 #### 一、WAP工具包概述 WAP(Wireless Application Protocol,无线应用协议)是一种为移动设备提供互联网服务的标准协议,其目的在于使手机和其他移动设备...
【WMLScript脚本程序设计】是手机网页制作中的一项核心技术,主要负责为WML(无线标记语言)页面添加交互性和动态功能。WMLScript是一种轻量级的脚本语言,设计用于移动设备上的Web应用,它提供了丰富的函数、语句和...
在本全面详细的WAP教程中,我们将深入探讨无线应用协议(WAP)的各个方面,包括其原理、编码、设计以及相关的编程语言WML(Wireless Markup Language)和WMLScript。WAP是一种允许移动设备通过无线网络访问互联网...
还不错的一本WAP教程,PDF格式 第 1章 认识WAP 第 2章 WAP原理、架构与...第 8章 WMLScript 脚本程序设计 第 9章 WMLScript 库及库函数 第 10章 HDML编程 第 11章 WAP 编程与开发的高级技术 第 12章 WAP 安全与实现.
这是我觉得最全的一本关于wap编程的书了,从底层的配置、原理到wml页面的开发,都是...第8章 WMLScript脚本程序设计 第9章 WMLScript库及库函数 第10章 HDML编程 第11章 WAP编程与开发的高级技术 第12章 WAP安全与实现
WAP开发是构建能在移动设备上运行的应用程序的过程,通常涉及WML(无线标记语言)和WMLScript。 **WML**(Wireless Markup Language)是一种基于XML的语言,专门设计用于创建适合小屏幕和有限输入设备的网页内容。...
因此,WAP 1.0引入了WMLScript,这是一种轻量级的脚本语言,类似于JavaScript,用于增强WML文档的交互性和动态行为。 WMLScript允许开发者在WML卡片中添加事件处理程序,执行计算,控制用户界面等。例如,下面的WML...
### WMLScript脚本程序设计知识点详解 #### 一、WMLScript脚本程序设计概述 WMLScript作为Web Markup Language (WML)的一种嵌入式脚本语言,主要用于为WAP(Wireless Application Protocol)应用程序提供动态内容...
在移动互联网早期,WML(Wireless Markup Language)和WMLScript是开发手机网页程序的主要技术,主要用于创建WAP(Wireless Application Protocol)网站。WAP是为了解决低带宽和有限显示能力的移动设备而设计的一种...
WMLScript则是与WML配合使用的脚本语言,提供交互性和动态功能。 书中首先对WAP栈进行了概述,解释了数据如何从服务器传输到客户端的过程。作者使用了一种直观的方式引导读者了解这本书的结构和书中所采用的约定,...
在《WML_WML Script手机网页程序设计》这本书中,可能详细介绍了如何使用WML和WML Script进行手机网页开发,包括基本语法、交互实现、性能优化技巧以及实际案例分析等内容。通过阅读这本书,开发者可以掌握创建高效...
通过深入学习这本NOKIA公司出品的WML脚本程序参考书,开发者可以提升在WAP环境下的编程技能,为移动互联网时代的应用开发打下坚实的基础。随着技术的进步,虽然WAP已逐渐被更先进的技术如HTML5取代,但其在移动...
WMLScript是一种专为无线应用协议(WAP)设计的脚本语言,主要用于增强WML(无线标记语言)网页的交互性和动态性。它类似于JavaScript,但更适合在移动设备上运行,因为这些设备通常具有有限的处理能力和内存资源。...
WMLScript是一种脚本语言,主要用于无线标记语言(WML)的页面,它与JavaScript相似,但专为移动设备和无线应用设计。WMLScript在2000年代初是移动互联网开发的重要组成部分,因为那时的移动设备普遍支持WAP(无线...
WMLScript作为WML的重要组成部分,为WAP环境下的应用程序开发提供了强大的动力。它不仅简化了移动应用的开发过程,还增强了移动应用的功能性和用户体验。对于希望在移动平台上创建丰富和交互式的应用程序的开发者来...
WMLScript是一种轻量级的脚本语言,用于增强WML(无线标记语言)页面的交互性和动态性,它在早期的移动互联网时代广泛应用于手机网页开发。 WML(Wireless Markup Language)是专门为无线设备设计的一种标记语言,...
总之,这份“WMLScript库函数使用说明”文档是学习WAP开发的重要参考资料,它将帮助你掌握WMLScript的精髓,提升你在无线应用开发领域的技能。仔细研读并实践其中的示例,将使你更好地理解和运用WMLScript,从而开发...
<script type="text/wmlscript"> changeTitle() { this.parent.set('title', '标题已改变'); } </script> </wml> ``` 在这个例子中,当用户点击文本时,`onclick`事件触发`changeTitle`函数,该函数会...