当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个返回值
返回值语法:
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参…){
//函数体
return 返回值;
}
//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);
函数的调用结果就是返回值,因此我们可以直接对函数调用结果进行操作。
返回值详解:
如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。
推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。
求一个数绝对值
<script>
function getAbs(num){
var r = num>0?num:-num;
return r; //函数中有返回值
console.log("aaa");
}
//在调用函数的时候,我们可以通过变量来接收这个返回值
var result = getAbs(-5);
console.log(result);
</script>
获取学生成绩的等级
<script>
function getScoreDegree(num){
var s = "";
if(num > 80){
s = "优秀";
}
else if(num > 70){
s = "良好";
}
else if(num > 60){
s = "及格";
}
else{
s = "不及格";
}
return s;
//因为js有了默认处理,没有给返回值会返回undefined
}
var s = getScoreDegree(3);
console.log(s);
</script>
求5的阶乘 5!
<script>
//用for循环实现
function jiechen(num){
var c = 1;
for(var i=1;i<=num;i++){
c *= i;
}
return c;
}
var s = jiechen(5);
console.log(s);
</script>
<script>
//递归思想 在方法内部自己调用自己
//求第n个数的阶乘
function jiechen(num){
if(num == 1){
return 1;
}
else{
//思路
//我们要求1的阶乘,结果为1
//我们要求2的阶乘,结果为1的阶乘*2
//我们要求3的阶乘,结果为2的阶乘*3
//假设num = 3
//return jiechen(2) * 3
//假设num = 4
//return jiechen(3)*4
//return jiechen(2)*3*4
//return jiechen(1)*2*3*4
return jiechen(num-1)*num;
}
}
var r = jiechen(5);
console.log(r);
//求1!+2!+3!+....+n!
var sum = 0;
for(var i=1;i<=7;i++){
sum += jiechen(i);
}
console.log(sum);
</script>
求一组数中的最大值
<script>
//声明函数
function getMax(a){
//console.log(a);
//认为第0个数是最大的
var max = a[0];
for(var i=1;i<a.length;i++){
if(max < a[i]){
max = a[i];
}
}
return max;
}
//调用函数
var a = [13,2,16,88,23];
var mx = getMax(a);
console.log(mx);
</script>