定义: 终止函数的执行,并返回一个指定的值给函数调用者。
语法:
return [表达式]
(如果不写return,则返回undefined)
说明: 1、return只能写在函数体内,如果写在函数体外将会报错,例如:
for (var i = 0; i < 10; i++) {
return i
}
// Uncaught SyntaxError: Illegal return statement
2、return后面的语句都将不会执行
例1:
// 作为函数返回值
function add(a, b) {
return a + b
}
var num = add(1, 2)
console.log(num) // 3
这里要注意 : return后的表达式要和return写在一行,由于js的机制会在语句后自动插入分号,这样会影响return语句。
return
a + b
// 会被转换为
return;
a + b;
例2:
// 函数中有for
/**
* 传入一个数组,并返回数组中第4个元素
* @param {Array} arr 需要传入的数组
*/
function sum(arr) {
if (!arr.length) return
for (var i = 0; i < arr.length; i++) {
if ( i === 3) return arr[i]
}
return false
}
var data1 = sum([])
var data2 = sum([11, 22, 33, 44, 55])
var data3 = sum([11, 22])
console.log(data1) // undefined
console.log(data2) // 44
console.log(data3) // false
声明一个函数,用于返回一个数组的第四个元素。第一个return代表如果是空数组,那么返回undefined,下面的程序都不会执行;第二个return代表当找到数组中第四个元素的时候跳出循环并返回这个元素;第三个return代表如果上述条件都不满足就返回false。
例3:
// 返回函数 -- 闭包
function foo(x) {
return function double(x) { return x * 2}
}
var answer = foo()
console.log(answer(100)) // 200
定义: 中止当前循环并把程序控制流转到紧接着被中止语句后面的语句。
语法:
break
例1:
// 终止循环
for (var i = 0; i < 10; i++) {
if (i == 5) break
console.log(i)
}
// 0 1 2 3 4
呵呵,这个看起来跟break没啥区别,只是他可以放在函数外面
例2:
// 放在函数里
function foo(x) {
var i = 0
while (i < 6) {
if (i == 3) {
break;
}
i += 1
}
return i * x
}
console.log(foo(5)) // 15
放在函数里也差不多,就那样吧,当i=3的时候循环就终止了。但是跟return不同的是,下面函数的return还是起作用了,所以翻上去看定义,这个break就是跳出循环的而已,不会终止循环体外面的程序执行。
continue跟break都是用来终止循环的,只是有一点不同,举个栗子:
for (var i = 0; i < 10; i++) {
if (i == 5) continue
console.log(i) // 0 1 2 3 4 6 7 8 9
}
在i=5的时候它终止本次循环了,继续下次循环,所以就是没有输出5。