js权威指南学习笔记(三)语句

1、声明语句

如果用var声明的变量没有初始化,那么这个变量的值会被初始化为undefined。
函数声明语句的语法如下:
 
 
 
 
4
4
 
 
 
 
 
1
console.log(funcname());     //在此调用该函数正常输出
2
function funcname([arg1 [, arg2 [..., argn]]]) { //要传入的参数
3
    statements    //执行语句
4
}
 
 
函数声明语句通常出现在javascript代码的最顶层,也可以嵌套在其他函数体内。
函数定义语法:
 
 
 
 
4
4
 
 
 
 
 
1
console.log(funcname); //在此调用该函数 打印undefined ,因为只是函数名提前了,还没执行到函数体。
2
var funcname = function(type) {
3
    statements
4
}
 
 
 函数声明和函数定义的区别
在javascript解析时,函数声明提升到了当前作用域的顶部,同时包括函数名称和函数体都提前了,然而函数定义只有函数名提前到了当前作用域的顶部,函数体并没有被提前。
2、条件语句
switch语句语法:
 
 
 
 
14
14
 
 
 
 
 
1
switch(n) {
2
    case expression1:
3
        //执行代码块1
4
        break;
5
    case expression2:
6
        //执行代码块2
7
        break;
8
    case expression3:
9
        //执行代码块3
10
        break; 
11
    default:
12
        //执行代码块4
13
        break;
14
}
 
 
说明:当执行这条switch语句的时候,它首先计算n的值,然后查找case字句中的表达式expression1、expression2等和n的值是否相同(这里的相同是按照“===”运算符进行比较的),相同,就执行这个case所对应的代码块,如果都找不到,那么将会执行default中的代码块。
每个case关键字后面都可以跟随任意的表达式。
3、循环
for/in循环:
 
 
 
 
3
3
 
 
 
 
 
1
for (variable in object) {
2
    statement
3
}
 
 
for/in循环遍历时,有“可枚举”属性的才会遍历到。但是并非一个对象的所有属性都是可枚举的,通过javascript代码添加到对象的属性是可枚举的,而内部对象的预定义属性(如方法)通常是不可枚举的。
适用于遍历对象属性成员
4、跳转
(1)标签语句:通过给语句定义标签,就可以在程序的任何地方通过标签名引用这条语句。也可以对多条语句定义标签。如:
 
 
 
 
4
4
 
 
 
 
 
1
mainloop: while (token != null) {
2
    //代码
3
    continue mainloop;     //跳出该循环,执行下一次循环
4
}
 
 
break和continue是javascript中唯一可以使用语句标签的语句。当需要跳出多层循环的时候,该标签语句就非常有用。
(2)throw语句
当javascript代码运行时错误或者程序使用throw语句就会显式地抛出异常。
 
 
 
 
x
9
 
 
 
 
 
1
function factorial(x) {
2
    if (x < 0) {
3
        throw new Error("x不能为负数");
4
    }
5
    for (var f = 1; x > 1; f *= x, x--);
6
    return f;
7
}
8

9
console.log(factorial(-1));     //传入的参数为负数,会抛出一个Error对象,并显示错误信息
 
 
(3) try/catch/finally 语句
它是javascript的异常处理机制。
具体说明如下:
 
 
 
 
18
 
 
 
 
 
1
try {
2
    //一般情况下这里的代码会从头执行到尾而不会产生任何问题,
3
    //但有时会抛出一个异常,要么是由throw语句直接抛出异常,
4
    //要么是通过调用一个方法间接抛出异常
5
}
6
catch(e) {
7
    // 当且仅当try语句块抛出了异常,才会执行这里的代码
8
    //这里可以通过局部变量e来获得对Error对象或者抛出的其他值的引用
9
    //这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常,
10
    //还可以通过throw语句重新抛出异常
11
}
12
finally {
13
    //不管try语句块是否抛出异常,这里的逻辑总是会执行,终止try语句块的方式有:
14
    // 1)正常终止,执行完语句块的最后一条语句
15
    // 2)通过break、continue或return语句终止
16
    // 3) 抛出一个异常,异常被catch从句捕获
17
    // 4) 抛出一个异常,异常未被捕获,继续向上传播
18
}
 
 
posted @ 2018-04-27 22:25  tonysmile  阅读(124)  评论(0编辑  收藏  举报