赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 编程语言

常用的编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN


首页 > 专业技术 > 编程语言 > JavaScript的基本流程控制
JavaScript的基本流程控制
  1. 分支结构:
  2. 循环结构:
  3. 异常处理try...catch语句:

JavaScript基本程序是由一系列语句组成,通常这些语句按照它们的书写先后顺序从头到尾依次执行,这是程序执行的最简单流程,即顺序结构。除顺序结构之外,控制程序执行的基本结构还有分支结构和循环结构。
对JavaScript脚本,每条语句后面都应当有分号(;),但也可以不加分号,但当在一行中书写多条语句时,语句之间必须要加上分号,表示一个语句正常结束。一个独立的分号表示空语句,不进行任何操作,但语法上起着一条语句的作用。

1.分支结构:

根据一定的条件去执行一条语句或语句组,为分支结构,或称选择结构,包括if语句和switch语句。

1)if语句:

If语句有多种形式。
①if...else语句
if  (判定条件) 语句1;
else 语句2;
If语句执行时,先计算"判定条件"表达式的值,如果返回true,就执行"语句1";否则,"判定条件"返回false,就执行"语句2"。这种形式的if语句支持典型的二路选择结构。
示例:程序是求出输入两个数的最大值。
<head><title>示例</title>
<script type="text/javascript" >
   var x,y,max,x_s,y_s;
   x_s=prompt("x=:","0"); x=parseFloat(x_s);
   y_s=prompt("y=:","0"); x=parseFloat(y_s);
   if  (x>y)
      max=x;
   else
      max=y;
   alert("最大值是:"+max);
</script>
</head>
②单独的If语句:
只有if语句而没有else部分,更简单。
if  (判定条件) 语句;
如果"判定条件"返回true,就执行语句,否则就不执行。
③使用语句组:
如果当一个条件成立时要执行的是几个语句,可以将两个或多个语句用一对大括号{}括起来。用大括号括起来的的一组语句序列称为语句组,语句组可以放在任何一个单条语句可以放的地方。在语法上,语句组相当于一条语句。
④If语句的嵌套:
可以把一个if语句当作另外一个if语句的语句部分来用,这就是if语句的嵌套。使用if嵌套形式,可以处理多路分支情况,即依次判断各个if条件。

2)Switch语句:

最典型的多路分支情况是switch语句,它根据switch表达式的值,选择不同的分支执行。
switch  (表达式)
{
case 表达式1:
   语句1;  [break;]
case 表达式2:
   语句2;  [break;]
......
case 表达式n:
   语句n;  [break;]
default:
   语句n+1;  [break;]
}
每个case后面的表达式一般为整形或字符串常量,且关键字case与表达式之间必须有空格。
当JavaScript执行switch语句时,首先计算switch后面括号内的表达式;当此表达式的值与某个case表达式的值相等时,就执行此case后面的语句;如果所有case表达式的值都不与switch表达式相等,就执行default后面的语句。
当执行某个case后面的语句时,如果遇到break语句,就结束这条switch语句的执行。如果没有break语句,就会一直执行到switch语句的结束标记,即右大括号}。为了在执行一个分支后跳出switch语句,可在每个分支后面加上break,这样只执行匹配的分支。示例:
<head><title>示例</title>
<script type="text/javascript" >
   var answer;
   answer=prompt("以下动物哪种是哺乳动物?\nA.蛇\tB.鱼\tC.人\tD.虫","E");
   switch (answer)
   {
   case  "a":
   case  "A":
      alert("错!蛇是爬行动物");
      break;
   case  "b":
   case  "B":
      alert("错!鱼是鱼类");
      break;
   case  "c":
   case  "C":
      alert("对!人是哺乳动物");
      break;
   case  "d":
   case  "D":
      alert("错!虫是昆虫");
      break;
   default:
      alert("只能选填字母A、B、C或D");
      break;
   }
</script>
</head>
示例中使用了转义字符\n(换行)和\t(制表符),用来控制文本在对话框中的显示位置。

2.循环结构:

当一些语句需要反复执行时,就要用到循环结构,即循环语句。可以在循环语句中指定语句重复执行的次数,也可以指定重复执行的条件。

1)for语句:

For语句时最常用的循环语句,它通常使用一个变量作为计算器来指定重复执行的次数,这个变量称循环变量。格式为:
  for (初值表达式;循环判定式;更新表达式) 循环体语句;
For语句的执行步骤如下:
①计算初值表达式;
②计算循环判定式(即条件表达式的值);
③如果循环判定式的值为ture,就执行步骤④,否则退出for语句;
④执行循环体语句,之后再计算更新表达式;
⑤重复执行步骤②③④,直至退出。
示例:页面显示不同标题字体
<head><title>示例</title>
<script type="text/javascript" >
   var i;
   for (i=1;i<6;i++)
   {
      document.write("<h"+i+">此处是"+i+"级标题</h"+i">");
   }
</script>
</head>
For…in循环:
用来遍历对象的属性或数组中的元素,并对每个属性或元素执行运行。但对象的方法不能由for…in语句遍历,宿主对象的属性也不能遍历,几台成员不能遍历。语法格式:
  for (variableItem in Object){
    statement;
  }
For each…in循环:
用来遍历对象属性的值。语法格式:
  for each(variableItem in Object){
    statement;
  }
部分浏览器不支持。

2)While语句:

While语句时另一种基本的循环语句,格式为;
  while (循环判定式) 循环体语句;
当循环判定式为真时执行循环体语句。
While循环的执行步骤如下:
①计算循环判定式的值;
②如果循环判定式的值为true,则执行循环体语句,否则退出;
③重复执行步骤①②,直至退出循环。
示例:求1+2+3+...+100的和。
<head><title>示例</title>
<script type="text/javascript" >
   var i=1,sum=0;
   while (i<=100)
   {
      sum+=i;
      i++;
   }
   alert("1+2+3+...+100="+sum);
</script>
</head>

3)Do...while语句:

Do...while语句是while语句的变体,格式为:
   do 循环体语句 while (循环判定式);
Do...while语句是先执行循环体,再进行是否继续循环的判定,使得循环体语句至少执行一次。为了避免二义性,while循环判定式后面一定要加上分号,表示Do...while语句的结束。
Do...while循环的执行步骤如下:
①执行循环体语句;
②计算循环判定式的值;
③如果循环判定式的值为true,则转过去执行步骤①,否则退出循环。

4)Break和continue语句:

Break和continue语句可用于所有循环语句,break是结束整个循环语句的执行,continue是跳过循环体中未执行的语句而结束本次循环。通常,break和continue语句在循环体中与if语句配合使用,从而控制循环。示例:
<head><title>示例</title>
<script type="text/javascript" >
   var input,input_n,sum;
   for (sum=0;;)
   {
      input=prompt("sum="+sum+"\n请输入新的累加数(输入Q结束):","0")
      if  (input=="Q"||input=="q") break;
      input_n=parseFloat(input);
      if  (isNaN(input_n))  continue;
      if  (input_n<=0)  continue;
      sum+=input_n;
   }
   alert("sum="+sum);
</script>
</head>

5)标签语句:

为语句提供一个标识符,用于跳转到所指定的行开始执行。JavaScript只能由break和continue语句来使用标签语句。示例1:
  var a=new array();
  Inner:
  for (var i=0;i<5;i++) {
   if (i=2) {
     continue Inner;
   else {
     a[i]=i+1;
   }
  }
示例2:
  foo: {
  document.write("a");
  break foo;
  document.write("b");
  };

6)Let语句:

允许使用标识符来标识一个语句。示例:
  <script type="application/javascript;version=1.7">
   var x=1;
   var y=5;
   let (x=x+10,y=12) {
     document.write(x+y+"\n");
   }
  </script>
Let语句是JavaScript1.7新增的,部分浏览器不支持。

7)Yield语句:

可以在循环语句中产生一个输出值并返回。包含yield语句的循环常位于函数中,这种函数称为产生器,产生器可以遍历。示例:
<script type="application/javascript;version=1.7">
  function generator() {
    var i=0;
    while (i<10) {
      yield i;
      i++;
    }
  }
</script>
yield语句是JavaScript1.7新增的,部分浏览器不支持。

8)With语句:

可以方便地用来引用某个特定对象的方法和属性。示例:
  var rightNow=new Date();
  with(rightNow) {
    document.write(getDay()+"<br />");
    document.write(getMonth()+1+"<br />");
    document.write(getFullYear()+"<br />");
  };
使用with指明对象,这样就不必重复书写对象的名称。

9)循环的嵌套:

在一个循环语句的循环体中可以包含另一个循环语句,称为循环的嵌套,3种循环语句可以互相嵌套。示例:
<head><title>乘法表</title></head>
<body><h3>9x9乘法表</h3>
<pre>
<script type="text/javascript" >
   var i,j;
   for (i=1;i<=9;i++)
   {
      for (j=1;j<i;j++)
      {
         if  (j>1) document.write("\t");
         document.write(j+"*"+i+"="+j*i);
      }
      document.writeln();
   }
</script>
</pre>

3.异常处理try...catch语句:

异常处理是更复杂的一种流程控制。异常处理作用于一个语句块的全局,处理该语句块中不可以预知、不可控制的流程逻辑。结构为:
try  {
   try语句块
}
catch (exception)  {
   catch语句块
}
finally  {
   finally语句块
}
try...catch语句包括触发异常、捕获异常、结束处理三部分。使用try...catch语句可以捕获一个代码块中可能发生的异常,而使用try...finally语句则可以无视指定代码块中发生的异常,确保finally语句块中的代码总是被执行,可以使用throw语句在任意位置生成异常或由引擎内部执行过程中触发异常。
其中,finally语句块可选,总是在try...catch块退出前执行。如果在try块中使用return,finally块中的代码仍然在return子句之前执行。可以在try块前加标签:
aLabel:
try  {
   //...
   break aLabel;
}
这时finally块仍然在break子句之前执行。
throw语句一般使用在try语句块,表明抛出一个异常并终止其后的代码执行,throw语句后应为一个错误对象,比如Error()构造器的实例或通过catch(exception)子句中捕获到的异常,但也可以将任何对象或值作为异常抛出。其实,throw语句也可以用于catch和finally语句块中,其后面的语句同样不能被执行。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659