JavaScript return 语句在函数定义中的作用有两个:
return 语句可以返回包括基本数据类型、对象、函数等任意类型的值。每个函数都会返回一个值。当没有使用 return 语句,或使用了 return,但其后面没有指明返回值时,函数都将返回“undefined”值。如果需要返回“undefined”以外的值,必须使用 return,同时指明返回的值。
函数一旦执行完 return 语句,将会立即返回函数值,并中止函数的执行,此时 return 语句后的代码都不会被执行。根据 return 语句的这一特性,常常会在需要提前退出函数的执行时,利用不带返回值的 return 语句来随时中止函数的执行。
【例 1】return 语句显式返回函数值。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>return语句显式返回函数值</title>
<script>
function expressionCaculate(x){
if((x >= -10) && (x <= 10)){
return x * x - 1;
} else {
return 5 * x + 3;
}
}
console.log(expressionCaculate(6));
console.log(expressionCaculate(12));
</script>
</head>
<body>
</body>
</html>
expressionCaculate() 的 return 后面跟着的是一个表达式,在函数执行到 return 语句时会先计算表达式的值,然后返回该值。调用函数时,会根据传给 x 的值,返回不同表达式的值。
【例 2】return 语句中止函数的执行。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>return语句中止函数执行</title>
<script>
function add(a,b){
if(a > b){
console.log("a大于b");
return;
console.log("a+b=" + (a + b));
}
console.log("a+b=" + (a + b));
}
add(7,3);
</script>
</head>
<body>
</body>
</html>
执行 add(7,3) 代码时,将调用 add() 方法,此时第一个参数的值大于第二个参数,在控制台中输出“a 大于 b”,然后函数返回,停止执行,从而 return 语句后面的两条日志都不会被输出。运行结果如图 1 所示。
【例 3】return 语句返回函数。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>return语句返回函数</title>
<script>
function outerFunc(){
var b = 0;
return function(){ //返回匿名函数
b++;
console.log("内部函数中b=" + b);
}
}
var func = outerFunc();
func();
</script>
</head>
<body>
</body>
</html>
因为 outerFunc() 函数返回一个匿名函数,所以 outerFunc 函数的调用表达式就变为了函数表达式了,从而可以使用变量 func 来调用匿名函数。运行结果如图 2 所示。