1.2 JavaScript流程控制

来源:互联网 发布:阿里云备案账号是什么 编辑:程序博客网 时间:2024/05/23 18:59

Js中有很多语句和控制结构来改变语句的默认执行顺序:

1、  条件语句,js解释器可以根据一个表达式的值来判断是执行还是跳过这些语句,如if语句和switch语句。

2、  循环语句,可以重复执行语句,如whilefor语句。

3、  跳转语句,可以让解释器跳转至程序其他部分继续执行,如breakreturnthrow语句。

Javascript 语句小结

语句

语法

用途

Break

Break [label];

退出最内层循环或退出switch语句,又或退出label指定的语句

Case

Case expression;

Switch语句中标记一条语句

Continue

Continue [label];

重新开始最内层的循环或重新开始label指定的循环

Debugger

Debugger;

断电器调试

Default

Default;

switch语句中标识默认的语句

Do/while

Do statement while (expression)

While循环的一种替代形式

Empty

;

什么都不做

For

For(init;test;incr)statement

一种简写的循环

For/in

For(var in object)statement

遍历一个对象的属性

Function

Function name([param[],…]){body}

声明一个函数

If/else

If(expr)statement1 [else statement2]

执行statement1或者statement2

Lable

Labelstatement

statement指定一个名字

Return

Return [expression];

从函数返回一个值

Switch

Switch(expression){statement}

case或者“default”语句标记的多语句分支

Throw

Throw expression

抛出异常

Try

Try{statements}

[catch {handler statements}]

[finally {cleanup statements}]

捕获异常

Use strict

Use strict

对脚本和函数应用严格模式

Var

Var name=[=expr][,…]

声明并初始化一个或多个变量

While

While (expression) statement

基本的循环语句

With

With(object) statement

扩展作用域链(不赞成使用,难于优化,运行慢)

 

 

部分示例代码:

 

//递归函数

   function factorial(n) 

       {

           if(n <=1) return 1;

              returnn*factorial(n-1);

      

       }

       vary = 4;

       varvalue =factorial(y);

       //alert(value);//打印结果为244*3*2*1

      

      

       //for/in循环

       vardate = [1,4,6,32];

        for(var i in date) // date的属性名赋值给i,只有”可枚举“的属性才会遍历到,代码中定义的所有属性和方法都是可枚举的。js核心所定义的内置方法不是”可枚举的“,比如所有对象都有的toString()方法,for/in循环并不枚举这个属性

        {

            //alert(date[i]);//分别打印14632

        }

        

       //for循环的三个表达式之间用分号分隔,分别负责初始化操作,循环判断和计数器变量的更新

        for(var i=0;i<date.length;i++)

        {

           // alert(date[i]);

        }

        //要解释for循环是如何工作的,列出与之等价的while循环

        var j=0;

        while(j<date.length)

        {

            //alert(date[j]);

               j++;

        }

        

        

        /*

        *switch表达式与case表达式的比较匹配实际上是"==="恒等比较;

        *"default:"标签可以放置在switch语句内的任何地方

        */

        

        

        //break语句和continue语句,对于一条带标签的函数定义语句来说,不能从函数内部通过这个标签来跳转到函数外部

       mainloop:for (var i=0;i<3;i++)

          for(var j=0;j<3;j++)

             {

                  

                      if(i==1&&j==1)

                      {

                       

                            breakmainloop;//跳出最内层循环,即循环从i=2j=0开始(带有标签mainloop时,直接跳出整个循环)

                            //continuemainloop;//重新开始最内层的循环,循环从i=1j=2开始(带有标签mainloop时,循环从i=2j=0开始)

                      }

                     //alert("i="+i+" j="+j);

               

                }

        

        

        //throw语句,异常处理程序是用try/catch/finially语句的catch从句中编写的

       functionfactor(x)

       {

           if(x<0)throw new Error("x不能为负数");

              returnx*x;

       }

      

       try{

           //var n = Number(prompt("请输入一个正整数:",""));

              varn = 9;

              varf = factor(n);

              //alert("f="+f);

       }

       catch(ed)

       {

          alert(ed);

       }

      

       //下面代码说明了try/catch/finially的语法和使用目的

      

       try{

           //通常来讲,这里的代码会从头执行到尾而不会产生任何问题

           //但有时会抛出一个异常,要么是由throw语句直接抛出异常

              //要么是通过调用方法间接抛出

       }

       catch(e){

           //当且仅当try语句抛出了异常,才会执行这里的代码

           //这里可以通过局部变量e来获取对    Error对象或者抛出的其他值的引用

              //这里的代码块可以基于某种原因处理这个异常,亦可以忽略这个异常

           //还可以通过throw语句重新抛出异常

       }

       finally{

           //不管try语句块是否抛出了异常,这里的逻辑总是会执行,终止try语句块的方式有:

           //1、正常终止,执行完语句块的最后一句

              //2、通过breakcontinuereturn语句终止

           //3、抛出一个异常,异常被catch从句捕获

              //4、抛出一个异常,异常未被捕获,继续向上传播

       }

      

      

       //with语句,严格模式中禁止使用with语句,非严格模式也不推荐使用。在对象嵌套层次很深的时候常会使用with语句来简化代码编写

       //只有查找标识符的时候才会用到作用域链

       //如:

       functionnamechang2()

       {

 

              varf = document.forms[0];debugger;//当调试程序可用并运行时,js解释器将会以调试的模式运行

              f.name1.value="小兵勇猛(with方法)";

              f.adress.value="北京西单(正常方法)";

 

       }

      

       functionnamechang1()

       {

      

              with(document.forms[0]){

              //直接访问表单元素

              name1.value="兵兵兵(with方法)";

              adress.value="新疆乌鲁木齐(正常方法)";

              }

       }

      

      

      

       //"usestrict",目的是说明后续的代码将会解析为严格代码,以严格模式执行。他只能出现在脚本代码的开始或函数体的开始、任何实体语句之前

       /*

       *1、严格模式中禁止使用with语句

       *2、在严格模式中,所有变量都要先声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象的属性赋值,将会抛出一个引用错误异常

       *3、在严格模式中,调用的函数(不是方法)中的this值是undefined。(在非严格模式中,调用的函数中this值总是全局对象)。可以用这种特性来判断javaScript实现是否支持严格模式

       */

      

       varhasStrictModel = (function(){"use strict"; return this ===undefined;}());

       //alert("hasStrictModel="+hasStrictModel);

 

 

原创粉丝点击