Javascript核心读书有感之语句(11)

最后,需要注意的是,不管break语句带不带标签,它的控制权都无法越过函数的边界。比如:对于一条带标签的函数定义语句来说,不能通过函数内部通过这个标签来跳转到函数外部.

iii.continue语句

continue语句和break语句非常类似,但它不退出循环,而是转而执行下一次循环。continue语句的语法和break的语句语法一样简单

continue;

continue语句会也会带有标签

continue lebname;

不管continue语句带不带标签,它只能在循环体使用,在其它地方使用将会 报语法错误。
 当执行到continue语句的时候,当前的循环逻辑就终止了,随即执行下一次循环,在不同类型的循环中,continue的行为也有区别
1. 在while循环中,在循环开始处指定expression会重复检测,如果检测结果为true,循环体会从头执行。
2. 在do/while循环中,程序的执行至今跳转到循环的结尾处,这时会重新判断循环条件,之后才会继续下一次循环。
3. 在for循环中,首先会计算自增表达式,然后再检测test表达式,用以判断是否执行循环体。
4. 在for/in循环中,循环开始遍历下一个属性名,这个属性名赋给了指定的变量。

需要注意continue语句在while和for循环中的区别,while循环直接进入下一轮的循环条件判断,但for循环首先计算器increment表达式,然后判断循环条件。之前的章节讨论了和while循环“等价”的for循环行为。但由于continue在这两种循环中行为表现不同,因此使用while循环不可能完美的模拟等价的for循环。

下面这段代码展示了不带标签的continue语句,产生一个错误的时候跳过当前循环的后续逻辑

复制代码 代码如下:


            for (i = 0; i < data.length; i++) {
                if (!data[i]) continue; //不能处理undefined数据
                total += data[i];
            }

和break语句类似,带标签的continue语句可以用在嵌套的循环中,用以跳出层次嵌套的循环体逻辑。同样和break语句类似,在continue语句和labname之间不能有换行。

iiii.return

回想一下,函数调用的一种表达式,而且所有的表达式都有值。函数中的return语句即是指函数调用后的返回值。这里是return语句的语法:

return expression;

return语句只能在函数体内出现,如果不是的话会报语法错误。当执行到return语句的时候,函数终止执行,并返回expression的值给调用程序。例如:

复制代码 代码如下:


            function square(x) {return x * x} //一个包含return的语句函数
            square(4) //执行为16

如果没有return语句,则函数调用仅依次执行函数体内的每一条语句直到函数结束,最后返回调用程序。这种情况下,调用表达式的结果是undefined。return语句经常作为函数内最后的一条语句出现,但并不是说一定一定要放在函数的最后,即使在执行return语句的时候还有很多代码没有执行到,这时候函数也还返回调用程序。
return语句可以单独使用而不必带有expression,这样的话函数也会想调用程序返回undefined.例如:

复制代码 代码如下:


            //如果参数是null或者undefined则立即返回
            if (!o) return;
            //其它逻辑       

由于javascript可以自动插入分号,因此,return关键字和它后面的表达式之间不能有换行。

iiiii.throw语句

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgffjf.html