JavaScript中break、continue和return语句
一. 标签语句
代码块定义标签:
1. 标签名 :代码块(循环、条件判断等)
2. 标签名:{
代码...
}
注意:
- break和continue是JavaScript中唯一可以使用语句标签的语句
- 标签名不能是JavaScript保留关键字
- 标签的命名空间和变量或函数的命名空间是不同的,所以标签名可以和变量或函数名一样
- 标签语句只有在被标识的代码块中才起作用
二. break语句
- 单独使用break语句(出现在循环或者switch类的语句快中才合法): 立即退出最内层的循环或switch语句
- break后带有标签语句:
break 标签名
1. break和标签一起使用时,程序会跳转到标签所标识的语句块的结束,可跳出多层循环 2. break和标签名之间不要带换行,因为JavaScript可以给语句自动补全省略的分号 3. 示例代码 : var mattix = getData() // 从某处得到一个二维数组 // 将二维数组所有元素进行求和 var sum = 0, success = false // 从标签名开始,以便在报错时退出程序 compute_sum : if(matrix) { // 判断获得的数组是否为空 for(let x = 0; x< matrix.length; x++) { // 遍历二维数组中的每一项 let row = matrix[x] // 保存遍历的项 if(!row) break compute_sum // 判断获得的数组是否为空 for(let y = 0; y < row.length; y++) { // 遍历一维数组中的每一项 let cell = row[y] // 保存遍历的项 if(isNaN(cell)) break compute_sum // 判断获得的元素是否为数字类型 sum += cell // 逐项求和 } } } 4. 不管break语句带不带标签,它的控制范围都无法超过所在函数的边界。比如,对于一条带标签的函数语句来说,不能从函数内部通过这个标签来跳转到函数外部
三、continue语句
- continue语句和break语句非常相似,但它不是退出循环,而是转而执行下一次循环,用法和break类似:
不管continue语句带不带标签,它只能在循环体内使用,在其他地方使用会报错1. 直接使用: continue 2. 带标签使用: continue 标签名
- 遇到continue时,在不同循环的行为区别:
与break类似,可跳出多层循环,语句与标签名之间也不能换行1. 在while、do/while循环中,直接跳转到循环条件判断处,根据判断条件决定是否再循环 2. for循环中,首先计算自增表达式,然后在根据判断条件决定是否再循环 3. for/in循环中,直接开始遍历下一个属性名。
四、return语句
-
return语句只能在函数体内出现,函数体内执行到return语句时,函数会终止,并将返回值给调用的程序,返回值即是return语句后表达式的值
-
如果函数没有return语句,则函数调用仅依次执行函数体内每一条语句直到函数结束,返回值为undefined
-
return语句经常放在函数结尾,但不一定只能放在结尾,函数执行到return时,如果后续还有代码将不会被执行。而且函数与返回值之间不能有换行,因为JavaScript可以自动插入分号,否则会返回undefined。return语句也可以单独使用,返回值为undefined