javascript语句

首先最基础的块语句block语句),组合0-多个语句,块语句用一对花括号定义。(注意:没有块级作用域)。

var语句,声明语句,var a =b =1;这样创建,a是局部变量,b是全局变量,var a=1,b=1;这样声明都是局部变量。

其次就是try-catch语句,有三种,1,try和catch。2,try和finally3,try和catch与finally都有。

try-catch提供异常捕获机制,执行的流程是,先执行try块中的代码,如果抛出异常,由catch重句捕获并执行,如果没有异常,catch中的代码会忽略掉,不管有没有最后都会执行finally从句,try后面必须接着一个tcatch或者finally,所以有了三种情况。

例子:try{

              //do sth

           }finall{

             console.log("finally);

          }

(不管有没有异常都会执行finally的内容)

当try-catch嵌套时:

1,

try{
    try{
        throw new Error("oops");
    }
    finally{
        console.log("finally");
    }
}
catch(ex){
    console.error("outer",ex.message);
}

里面的没有catch,它会跳到最近的catch处理,在跳出之前会执行finally,所以执行顺序为:“finally”,"outer""oops"。
例子二

try{
    try{
        throw new Error("oops");
    }
    catch(ex){
        console.error("outer",ex.message);
    }
    finally{
        console.log("finally");
    }
}
catch(ex){
    console.error("outer",ex.message);
}

还是内外两层嵌套,这个在内层,加上了catch语句,那么抛出opps异常,抛出后首先执行内部的catch块,"inner""opps","finally",

例子三

try{
    try{
        throw new Error("oops");
    }
    catch(ex){
        console.error("inner",ex.message);
        throw ex;
    }
    finally{
        console.log("finally");
    }
}
catch(ex){
    console.error("outer",ex.message);
}

和例子二相比,内部的catch(ex)里面还可以抛异常,但还是会先抛"opps",然后在由内部的inner来处理,最后执行finally,但是要注意的是,这个catch里面又抛出异常,在finally执行之后又会执行outer oops,
即顺序如:"inner" "opps"

                  "finally"

                  "outer"  "opps"

如果内部的异常没有处理抛给外面了,在外面处理之前,要先执行finally语句。

函数语句 :函数声明和函数表达式

使用function关键字来声明,后跟一组参数以及函数体。

函数声明和函数表达式,很多区别,最主要的区别函数声明会预先处理,也叫做函数前置。所以在函数前面是可以调用的。函数表达式就不可以。

相关小结:对于参数的理解,无需指定函数的返回值,因为ECMAscript在任何时候返回任何值。

                 实际上,未指定返回值的函数返回的是特殊的underfined。

                 ECMAscript没有签名的概念,因为某函数参数是以一个包含零或多个值得数组的形式传递的,ECMAscript函数不能重载。

                

 

posted @ 2018-10-22 10:09  OneIsA  阅读(250)  评论(0编辑  收藏  举报