首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

ECMA-262描述了ECMAScript的几种语句statement)。语句主要定义了ECMAScript的大部分语法,通常是采用一个或多个关键字,完成给定的任务。语句可以非常简单,例如通知函数退出,也可以非常复杂,如声明一组要反复执行的命令。这一节将介绍所有标准的ECMAScript语句。

2.10.1  if语句

if语句是ECMAScript中最常用的语句之一(事实上在许多语言中都是如此)。if语句的语法如下:

其中condition可以是任何表达式,计算的结果甚至不必是真正的Boolean值,ECMAScript会把它转换成Boolean值。如果条件计算结果为true,执行statement1,如果条件计算结果为false,执行statement2。每个语句都可以是单行代码,也可以是代码块(一组置于括号中的代码行)。例如:

使用代码块被认为是一种编程最佳实践,即使要执行的代码只有一行。这样做可以使每个条件要执行什么一目了然。

还可以串联使用多个if语句,如下所示:

例如:

2.10.2  迭代语句

迭代语句又叫循环语句,声明一组要反复执行的命令,直到满足了某些条件为止。循环通常用于迭代数组的值(因此而得名),或者执行重复的算术任务。ECMAScript为了这种处理提供了四种迭代语句。

1. do-while语句

do-while语句是后测试循环,即退出条件在执行过循环内部的代码之后计算。这意味着在计算表达式之前,至少会执行循环主体一次。语法如下:

例如:

2. while语句

while语句是前测试循环。这意味着退出条件是在执行循环内部的代码之前计算的。因此,循环主体可能根本不被执行。语法如下:

例如:

3. for语句

for语句是前测试循环,而且在进入循环之前,能够初始化变量,并定义循环后要执行的代码。语法如下:

例如:

这段代码定义了初始值为0的变量i。只有当条件表达式(i<iCount)的值为true时,才进入for循环,这样循环主体可能不被执行。如果执行了循环主体,那么将执行循环后表达式,并迭代变量i

4. for-in语句

for-in语句是严格的迭代语句,用于枚举对象的属性。语法如下:

例如:

这里,for-in语句用于显示BOM window对象的所有属性。前面讨论过的方法property- IsEnumerable()ECMAScript中专门用于说明属性是否可以用for-in语句访问的方法。

2.10.3  有标签的语句

可以用下列语法给语句加标签,以便以后调用:

例如:

在这个例子中,标签start可被后来的break语句或continue语句引用。

2.10.4  break语句和continue语句

breakcontinue语句对循环中的代码执行提供了更严格的控制。break语句可以立即退出循环,阻止再次反复执行任何代码,而continue语句只是退出当前循环,根据控制表达式还允许继续进行下一次循环。例如:

在上面的代码中,for循环将从110迭代变量i。在循环主体中,if语句将(使用取模运算符)检查i的值是否能被5整除。如果能被5整除,将执行break语句,警告显示"4",即在退出循环前执行循环的次数。如果用continue语句代替这个例子中的break语句,结果将不同:

这里,警告将显示"8",即执行循环的次数。可能执行的循环总数为9,不过当i的值为5时,将执行continue语句,会使循环跳过表达式iNum++,返回循环开头。

break语句和continue语句都可以与有标签的语句联合使用,返回代码中的特定位置。通常,当循环内部还有循环时,会这样做,如下面的例子所示:

在这个例子中,标签outermost表示的是第一个for语句。正常情况下,每个for语句执行10次代码块,意味着iNum++正常情况下将被执行100次,在执行完成时,iNum应该等于100。这里的break语句有一个参数,即停止循环后要跳转到的语句的标签。这样break语句不止能跳出内部for语句(即使用变量j的语句),还能跳出外部for语句(即使用变量i的语句)。因此,iNum最后的值是55,因为当ij的值都等于5时,循环将终止。可以以同样的方式使用continue语句:

在这个例子中,continue语句会迫使循环继续,不止是内部循环,外部循环也如此。当j等于5时出现这种情况,意味着内部循环将减少5次迭代,致使iNum的值为95

可以看到,与breakcontinue联合使用的有标签语句的功能非常强大,不过过度使用它们会给调试代码带来麻烦。要确保使用的标签具有说明性,不要嵌套太多层循环。

2.10.5  with语句

with语句用于设置代码在特定对象中的作用域。它的语法如下:

例如:

这段代码中,with语句用于字符串,所以在调用toUpperCase()方法时,解释程序将检查该方法是否是本地函数。如果不是,它将检查伪对象sMessage,看它是否为该对象的方法。然后警告将输出"HELLO WORLD",因为解释程序找到了字符串"hello world"toUpperCase()方法。

with语句是运行缓慢的代码段,尤其是在已设置了属性值时。大多数情况下,如果可能,最好避免使用它。

2.10.6  switch语句

if语句的姊妹语句是switch语句,开发者可以用它为表达式提供一系列情况case)。 switch语句的语法如下:

每个情况都是表示“如果expression等于value,就执行statement”。关键字break会使代码执行跳出switch语句。没有关键字break,代码执行就会继续进入下一个情况。

关键字default说明了表达式的结果不等于任何一种情况时的操作(事实上,它是else从句)。

switch语句主要是为避免让开发者编写下面这种代码:

等价的switch语句如下:

ECMAScriptJava中的switch语句有两点不同。在ECMAScript中,switch语句可以用于字符串,而且能用不是常量的值说明情况:

这里,switch语句用于字符串sColor,声明case使用的是变量BLUEREDGREEN,这在ECMAScript中是完全有效的。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论