4.7 其他语句
在JavaScript中除了选择语句、循环语句、跳转语句和异常处理语句之外,还存在一些其他语句,而这些语句都是在JavaScript中必不可少的语句,请看以下的介绍。
4.7.1 标签语句
标签语句在前面的章节里已经有所接触,如break语句和continue语句想要跳出到特定的循环之外时,就必须使用标签语句。在switch语句中的case语句和default语句,这些都是特殊的标签语句。其实,在JavaScript中,任何语句之前都可以加上一个标签,标签语句的作用仅仅是标记该语句,标签语句的语法代码如下所示:
标识符 : 语句
其中,标识符必须是在JavaScript中合法的标识符,不能是保留字。给一个语句加上标签,就相当于为该语句起了一个名字,这样,就可以在程序中的任何一个地方通过这个名字来引用该语句。有关标签语句的使用请查看本书配套代码文件目录“代码\第04章\sample15.htm”里的内容,在此就不再赘述了。
4.7.2 var语句
var语句在前面的章节里也曾经介绍过,该语句可以用来定义一个或多个变量,其语法代码如下所示:
var 变量名 var 变量名 = 变量值 var 变量名1, 变量名2, 变量名3 … var 变量名1 = 变量值1, 变量名2 = 变量值2, 变量名3 = 变量值3 …
var语句的使用方法在前面章节里曾经多次出现过,在此就不再赘述了。在使用var语句时,有以下几点是需要注意的:
■使用var语句定义变量时,可以在定义变量的同时为变量赋值,也可以不赋值,如果不赋值,变量的初始值为undefined。
■由var语句定义的变量不能使用delete运算符来删除。
■在函数体内使用var定义的变量只能在该函数体内使用。而在函数体外使用var定义的变量可以在函数体内和函数体外使用。
4.7.3 function语句
function语句的作用是定义一个函数,其语法代码如下所示:
function 函数名(参数1,参数2…) { <语句块> }
在以上代码中,需要注意的是:
■函数名必须是一个合法的标识符,不能是保留字,也不能是表达式。
■函数可以有一个或多个参数,也可以没有参数。如果有多个参数的话,参数与参数之间必须用逗号隔开。
■无论函数是否有参数,函数名后面的括号不能省略。
■<语句块>中的语句可以是一条或多条,也可以一条也没有。但无论<语句块>中的语句有多少条语句,外面的大括号都不能被省略。
■<语句块>又称为函数体,这些语句在函数定义时是不会被执行的,只有在函数被调用的时候才会被执行。
■function语句是一个独立的语句,只能被嵌套在其他函数定义语句中,但不能出现在选择语句、循环语句或其他任何语句当中。
【实例4.20】有关function语句的使用方法请看以下代码,注意加粗的文字:
01 <html> 02 <head> 03 <title>function语句</title> 04 <script type="text/javascript"> 05 <!-- 06 //定义一个没有参数的函数 07 function myFun1() 08 { 09 document.write("这是一个没有参数的函数<br><br>"); 10 } 11 //定义一个包含一个参数的函数 12 function myFun2(x) 13 { 14 document.write("这是一个包含三个参数的函数<br>"); 15 document.write("传递过来的参数值为:" + x + "<br><br>"); 16 } 17 //定义一个包含3个参数的函数 18 function myFun3(x,y,z) 19 { 20 document.write("这是一个包含三个参数的函数<br>"); 21 document.write("传递过来的参数值分别为:<br>"); 22 document.write("x = " + x + "<br>"); 23 document.write("y = " + y + "<br>"); 24 document.write("z = " + z + "<br>"); 25 } 26 //调用第一个函数 27 myFun1(); 28 //调用第二个函数 29 myFun2(1); 30 //调用第三个函数 31 myFun3(1,2, "您好!"); 32 --> 33 </script> 34 </head> 35 <body> 36 </body> 37 </html>
【代码说明】在本例中定义了3个函数,这3个函数分别为第7~10行的没有参数的函数、第12~16行的有一个参数的函数和第18~25行的有多个参数的函数。在定义函数时,JavaScript并没有执行其中代码,只能在通过“myFun1();”、“myFun2(1);”和“myFun3(1,2, "您好!");”语句调用函数之后才会被执行。
【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample20.htm”里的内容,其运行结果如图4.18所示。
提示
函数可以一次定义,多次调用,因此,使用函数可以让某段代码被重复执行,减少代码输入,也可以让程序设计更具有模块性。
4.7.4 return语句
return语句只能出现在function语句的函数体中,用于指定函数的返回值。return语句的语法代码如下所示:
return 表达式;
在以上代码中,如果JavaScript执行到return语句,就会先计算表达式的值,然后将该表达式的值当成函数的值返回给调用函数的语句。当一个函数里出现了return语句,该函数就可以像表达式一样,返回一个值。
【实例4.21】有关return语句的使用方法请看以下代码,注意加粗的文字:
01 <html> 02 <head> 03 <title>return语句</title> 04 <script type="text/javascript"> 05 <!-- 06 function mySum(x,y) 07 { 08 var z = x + y; 09 return z; 10 document.write("测试一下。"); 11 } 12 13 var a = 1; 14 var b = 2; 15 var c = mySum(a,b); 16 document.write("a + b = " + c); 17 --> 18 </script> 19 </head> 20 <body> 21 </body> 22 </html>
【代码说明】在本例中定义了名为“mySum”的函数,该函数的作用是将两个参数相加,并返回其和。“var c = mySum(a,b);”语句的作用是调用mySum()函数,并且将函数的返回值赋给变量c。在本例的最后,输出了变量c的值。
注意
在本例中,return语句之后还有一个输出语句“document.write ("测试一下。");”,该语句并没有被执行,这是因为JavaScript只要遇到return语句就会将return语句后的表达式的值返回给调用函数的语句,而在该函数中的return语句之后的所有语句都会被忽略。因此,return语句通常是放在函数体的最后一行。
【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample21.htm”里的内容,其运行结果如图4.19所示。
注意
return语句后面的表达式也可以被省略。此时JavaScript会直接终止函数的执行,不返回任何数据。
4.7.5 with语句
JavaScript语言是面向对象的语言,因此,在对象的属性调用方面有可能会多次使用到对象属性存取运算符(.)。如果使用with语句,就可以简化对象属性调用的层次。with语句的语法代码如下所示:
with (对象) <语句块>
【实例4.22】有关with语句的使用方法请看以下代码,注意加粗的文字:
01 <html> 02 <head> 03 <title>with语句</title> 04 </head> 05 <body> 06 <form name="myForm"> 07 <input type="text" name="myText1"><br> 08 <input type="text" name="myText2"><br> 09 <input type="text" name="myText3"> 10 </form> 11 <script type="text/javascript"> 12 <!-- 13 //没有使用with语句时的属性调用 14 document.forms[0].myText1.value = "第一个文本框"; 15 //使用with语句时的属性调用 16 with(document.forms[0]) 17 { 18 myText2.value = "第二个文本框"; 19 myText3.value = "第三个文本框"; 20 } 21 --> 22 </script> 23 </body> 24 </html>
【代码说明】在本例中第7~9行创建了3个文本框,如果要改变文本框中的内容,则要使用以下语句:
document.forms[0].myText1.value = "第一个文本框"; document.forms[0].myText2.value = "第二个文本框"; document.forms[0].myText3.value = "第三个文本框";
该语句多次使用到了对象属性存取运算符。可以将以上语句中的相同部分放在with语句里,这可以减少代码的输入,如以下代码所示:
with(document.forms[0]) { myText2.value = "第二个文本框"; myText3.value = "第三个文本框"; }
【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample22.htm”里的内容,其运行结果如图4.20所示。
【实例4.23】虽然使用with语句可以减少大量的输入,但是with语句的执行速度并不会被优化,甚至会比使用JavaScript的等价代码的速度还要慢。因此,with语句是一个不推荐使用的语句。使用等价代码的方法同样可以减少代码的输入,sample22.htm也可以被改写成以下代码,注意加粗的文字:
01 <html> 02 <head> 03 <title>等价代码</title> 04 </head> 05 <body> 06 <form name="myForm"> 07 <input type="text" name="myText1"><br> 08 <input type="text" name="myText2"><br> 09 <input type="text" name="myText3"> 10 </form> 11 <script type="text/javascript"> 12 <!-- 13 //没有使用等价代码的语句 14 document.forms[0].myText1.value = "第一个文本框"; 15 //使用等价代码的语句 16 var myCode = document.forms[0]; 17 myCode.myText2.value = "第二个文本框"; 18 myCode.myText3.value = "第三个文本框"; 19 --> 20 </script> 21 </body> 22 </html>
【代码说明】代码第16行首先创建一个对象myCode,其值为document.forms[0];,表示当前表单,然后代码第17~18行分别获取表单中名为myText2和myText3的标签中的值。
【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample23.htm”里的内容,其运行结果与sample22.htm的运行结果完全相同。
4.7.6 空语句
空语句十分简单,就是一个分号,如下所示:
;
空语句不会产生任何作用,也不会有任何执行效果,甚至可以说是一个没有任何意义的语句。空语句常用来进行排版,或者是进行注释,甚至可以用来进行一个空循环。
【实例4.24】请看以下代码,注意加粗的文字:
01 <html> 02 <head> 03 <title>空语句</title> 04 <script type="text/javascript"> 05 <!-- 06 var arr = new Array(); 07 for (i=0;i<5;arr[i++]=1) 08 ; 09 document.write(arr); 10 --> 11 </script> 12 </head> 13 <body> 14 </body> 15 </html>
【代码说明】在本例中,代码第6行定义了一个名为arr的数组,通过for语句可以为数组中的元素赋值。在该for语句中,所使用的就是一个空语句。在本例中,将为数组元素赋值的语句写在了改变变量表达式中,因此for循环中就不需要再出现其他语句,使用空语句可以让for语句变得完整。如果只使用以下代码,在JavaScript中的语法是错误的,因为该语句没有循环体。
for (i=0;i<5;arr[i++]=1)
【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample24.htm”里的内容,其运行结果如图4.21所示。
4.7.7 comment语句
comment语句,即注释语句,这是JavaScript中常见到的语句之一,也是本章中介绍的最后一种语句。一个好的程序员,应该会使用适当的注释语句来提高程序的可读性与维护性。在JavaScript中的注释语句有以下两种:
// <单行注释文字> /* <单行或多行注释文字> */
其中,第一种注释语句只能注释一行文字,而第二种注释语句可以注释单行或多行文字。由于注释语句比较简单,并且在第1章中就已经介绍过了,在此就不再赘述了。