零基础学JavaScript
上QQ阅读APP看书,第一时间看更新

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.18 sample20.htm的运行结果

提示

函数可以一次定义,多次调用,因此,使用函数可以让某段代码被重复执行,减少代码输入,也可以让程序设计更具有模块性。

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所示。

图4.19 sample21.htm的运行结果

注意

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.20 sample22.htm的运行结果

【实例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.21 sample24.htm的运行结果

4.7.7 comment语句

comment语句,即注释语句,这是JavaScript中常见到的语句之一,也是本章中介绍的最后一种语句。一个好的程序员,应该会使用适当的注释语句来提高程序的可读性与维护性。在JavaScript中的注释语句有以下两种:


// <单行注释文字>
/*
 <单行或多行注释文字>
*/

其中,第一种注释语句只能注释一行文字,而第二种注释语句可以注释单行或多行文字。由于注释语句比较简单,并且在第1章中就已经介绍过了,在此就不再赘述了。