JavaScript流程控制语句

JavaScript流程控制语句

JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程。这3种流程结构分别是顺序、选择、循环三种基本控制结构构造.

 

顺序结构

默认的流程结构。按照书写顺序从上至下执行每一条语句。

 

if 语句

if(条件表达式){

    条件满足执行的语句;

}

其流程控制示意如下图:

特点:当条件表达式为真的时候就会执行{}中所有的代码, 并且只会执行一次。如果大括号在只有一条语句可省略大括号。

例子、输入字符串检测长度小于3,显示太短了,长度大于等于3则返回你的输入。源码如下:

<html>
<head>
<title>
 if 语句示例1
</title>
</head>
<body>
<p>请输入</p>
<input type="text" id="StringTextBox"> <!-- 输入框 -->
<button οnclick="myFunction()">检验</button>    <!-- 按钮 -->
<p id="demo"></p> 
<script>
function myFunction() 

    var x=document.getElementById("StringTextBox").value;
    if (x.length<3)  {    //字符串的 length 属性可以读取字符串的长度
         x="太短了"; 
    } 
document.getElementById("demo").innerHTML=x;  // 使用 document.write() 方法将内容写到 HTML 文档中

</script>
</body>
</html>

保存文件名:if语句示例1.html

运行之,参见下图:

 

if(条件表达式){

    条件成立执行的语句;

    }else{

        条件不成立执行的语句;

    }

其流程控制示意如下图:

当条件满足就执行if后面{}中的代码,当条件不满足就执行else后面{}中的代码,并且两个{}只有一个会被执行, 并且只会被执行一次。如果大括号在只有一条语句可省略大括号,否则不可省略。

例子

<html>

<head>

<title>

 if语句示例2

</title>

</head>

<body>

<script>

var TestScores = prompt('请输入成绩:','60'); // 弹出个输入框 让你输入东西                                   

if( TestScores >= 60 ){

    document.write('成绩:');  //使用 document.write() 方法将内容写到 HTML 文档中

    document.write(TestScores);

    document.write("合格,祝贺!");

}

else{

    document.write('成绩:');

    document.write(TestScores);

    document.write("不合格,努力呀!");

}

</script>

</body>

</html>

保存文件名:if语句示例2.html

运行之,参见下图:

 

if(条件表达式A){

    条件A满足执行的语句;

}else if(条件表达式B){

    条件B满足执行的语句;

}

... ...

else{

    前面所有条件都不满足执行的语句;

}

其流程控制示意如下图:

从上至下的依次判断每一个条件表达式, 哪一个条件表达式满足, 就执行该条件表达式后面{}中的代码

如果前面所有的条件表达式都不满足, 就会执行else后面{}中的代码

并且众多的大括号只有一个会被执行, 并且只会执行一次

 

Switch语句

基本格式

switch(条件表达式){

  case 表达式:

      语句1;

      break;

  case 表达式:

      语句2;

      break;

  case 表达式n:

      语句n;

      break;

  default:

      语句n+1;

      break;

}

语义说明:

switch 语句流程控制示意如图所示:

计算条件表达式的值。逐个与case后面表达式的结果值比较;

当条件表达式的值与某个表达式的值全等===时, 执行其后的语句,并且不会再与其它case进行比较;

如条件表达式的值与所有case后的表达式均不相同时,则执行default后的语句。

注意break是可选的。遇到break就跳出整个switch语句,如果子句中不包含 break,若有后续的子句,将接着处理后续的子句,而不论是否匹配,直至switch语句尾部或遇到下一个break,因此一般包含break!详见下面的例子。

特别提示,下面的例子为说明switch其特性,写法有些冗余。

例1、

<html>
<head>
<title>
switch语句示例1(使用break)
</title>
</head>
<body>
<p>点击下面的按钮来显示今天是周几:</p> 
<button οnclick="myFunction()">请单击此按钮</button> 
<script> 
var d=new Date().getDay(); //
document.write("今天的星期代表数字:"+d); 
function myFunction() 
{ var x; 
 switch (d)
 { 
 case 0: 
     x="Sunday"; 
     document.write(x);
     document.write("<p>");
    break; 
 case 1: 
     x="Monday"; 
     document.write(x);
     document.write("<p>"); 
    break; 
 case 2: 
     x="Tuesday"; 
     document.write(x);
     document.write("<p>");
    break; 
 case 3: 
     x="Wednesday"; 
     document.write(x);
     document.write("<p>");
    break; 
 case 4: 
     x="Thursday"; 
     document.write(x);
     document.write("<p>");
    break; 
 case 5: 
     x="Friday"; 
     document.write(x);
     document.write("<p>");
    break; 
 case 6: 
     x="Saturday"; 
     document.write(x);
     document.write("<p>");
    break; 
 default:
      x="Bye"; 
     document.write(x);
     document.write("<p>");
     break;
 } 

</script>
</body>
</html>

保存文件名:switch语句示例1(使用break).html
运行之,参见下图:

例2、本例和例1基本相同,不同点是标题(title)换了,屏蔽(用//注释掉了)了break。
<html>
<head>
<title>
switch语句示例2(不用 break)
</title>
</head>
<body>
<p>点击下面的按钮来显示今天是周几:</p> 
<button οnclick="myFunction()">请单击此按钮</button> 
<script> 
var d=new Date().getDay(); //
document.write("今天的星期代表数字:"+d); 
function myFunction() 
{ var x; 
 switch (d)
 { 
 case 0: 
     x="Sunday"; 
     document.write(x);
     document.write("<p>");
    // break;
 case 1: 
     x="Monday"; 
     document.write(x);
     document.write("<p>"); 
    // break;
 case 2: 
     x="Tuesday"; 
     document.write(x);
     document.write("<p>");
    // break;
 case 3: 
     x="Wednesday"; 
     document.write(x);
     document.write("<p>");
    // break;
 case 4: 
     x="Thursday"; 
     document.write(x);
     document.write("<p>");
    // break;
 case 5: 
     x="Friday"; 
     document.write(x);
     document.write("<p>");
    // break;
 case 6: 
     x="Saturday"; 
     document.write(x);
     document.write("<p>");
    // break;
 default:
      x="Bye"; 
     document.write(x);
     document.write("<p>");
     //break;
 } 

</script>
</body>
</html>

保存文件名:switch语句示例2(不用break).html
运行之,参见下图:
 

 

循环结构

在给定条件成立的情况下,反复执行某一段代码。一般有三种类型

while语句;

do-while语句;

for语句;

 

while的格式

while(条件表达式){

    条件满足执行的语句;

}

其流程控制示意如下图:

 

while的特点: 满足条件表达式为真执行后面{}的代码,对if相比while会被执行多次,执行到不满足条件为止,缺失条件会陷入死循环。

例子、用while语句输出1~10的整数

<!DOCTYPE html>

<head>

    <title>while语句</title>

</head>

<body>

<p>输出1~10的整数</p>

<script>

    var num = 1;

    while( num <=10)

    {

        document.write( num + " " );

        num++;

    }

</script>

</body>

</html>

保存文件名:while语.html

运行之,参见下图:

 

do-while循环的格式

do {

    需要重复执行的代码;

}while(条件表达式);

其流程控制示意如下图:

do while循环的特点: 无论条件表达式是否为真, 循环体都会被执行一次

例子、用do while语句输出1~10的整数

<!DOCTYPE html>

<head>

    <title>do-while语句</title>

</head>

<body>

<p>输出1~10的整数</p>

<script>

    var num = 1;

   do

    {

        document.write( num + " " );

        num++;

    } while( num <=10)

</script>

</body>

</html>

保存文件名:do-while语.html

运行之,参见下图:

运行之,参见下图:

 

while和dowhile如何选择

大部分情况下while循环和dowhile循环是可以互换的

如果循环体中的代码无论如何都需要先执行一次, 那么建议使用do-while循环,其它的情况都建议使用while循环

 

 

for循环的格式

for(expr1; expr2; expr3){

    需要重复执行的代码;

}

其流程控制示意如下图:

expr1是初始化表达式,在循环开始前无条件地求值一次,expr2是条件表达式,在每次循环开始前求值。如果表达式 expr2 的值为真,则执行语句块(需要重复执行的代码),否则将终止循环,执行下面代码。 expr3 是循环后增量表达式,在每次循环之后被求值。

例子、用for语句输出1~10的整数

<!DOCTYPE html>

<head>

    <title>for语句</title>

</head>

<body>

<p>输出1~10的整数</p>

<script>

    for( var num = 1; num <=10; num++)

    {

        document.write( num + " " );

    }

</script>

</body>

</html>

保存文件名:for语句.html

运行之,参见下图:

 

下面给出for语句嵌套的示例。

例子、用for语句嵌套打印九九表

<html>

<head>

<title>

for语句嵌套打印九九表

</title>

</head>

<body>

<p>九九乘法表</p>

<script>

for (var i = 1; i < 10; i++) {

     for (var j = 1; j <= i; j++) {

          document.write(j + "*" + i + "=" + i * j); // 1 * 1 = 1

          document.write(" ");

     }

     document.write("<br/>");

}

</script>

</body>

</html>

保存文件名:for语句嵌套打印九九表.html

运行之,参见下图:

 

break 与 continue 语句

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。区别在于:

break语句用于跳出并结束循环。

continue 用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。

var i = 0;

while(i < 10) {

  if ( i  === 5 ) break;       // 将 break 换成 continue 则会进入死循环

  console.log('i 当前为:' + i);

  i++;

}

上面代码只会执行10次循环,一旦i等于5,就会跳循环。

 

for-in语句

for-in语句是 for 语句的一种特殊形式。语法格式如下:

for ( [var] variable in <object | array)

    语句或语句块

variable 表示一个变量,可以在其前面附加 var 语句,用来直接声明变量名。in 后面是一个对象或数组类型的表达式。在遍历对象或数组过程中,把或取的每一个值赋值给 variable。

然后执行 语句或语句块,其中可以访问 variable 来读取每个对象属性或数组元素的值。执行完毕,返回继续枚举下一个元素,以此类推知道所有元素都被枚举为止。

对于数组来说,值是数组元素的下标;对于对象来说,值是对象的属性名或方法名。

执行流程如下图:

 

例子

<!DOCTYPE html>

<head>

    <title>for-in语句</title>

</head>

<body>

<p>输出:</p>

<script>

var a = [1,true,"0",[false],{}];  //声明并初始化数组变量

for (var n in a) {  //遍历数组

    document.write("a["+n+"] = " + a[n] + "<br>");  //显示每个元素及其值

}

</script>

</body>

</html>

保存文件名:for-in语句.html

运行之,参见下图:

提示:使用 while 或 for 语句可以实现相同的遍历操作,这里以for语句为例,做法是将<script>与</script>之间的部分改为:

var a = [1,true,"0",[false],{}];  //声明并初始化数组变量

for (var n = 0;n < a.length;n++) {  //遍历数组

document.write("a["+n+"] = " + a[n] + "<br>");  //显示每个元素的值

就行了。

 

三元运算符

三元运算符的表达式语法格式:

  1.   ?  (expression2)  :  (expression3)

在  expression1  求值为  true  时的值为  expression2  ,在expression1  求值是  false  时的值为  expression3  。

例子、使用三元运算符求一个数的绝对值

var x, y;

x = window.prompt("请输入:");

y = x >= 0 ? x : -x;

 

y = x >= 0 ? x : -x;

等同于下面这段代码:

if (x > 0) {

     y = x;

} else {

     y = -x; 

}

两种写法进行了对比,可以很明显的看出三元运算符的条件判断写法代码量更简洁,而if-else语句显得有点臃肿。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值