js函数(1)

javascript中允许函数的嵌套定义,但它会使程序的可读性降低,因此,需要尽量避免使用这种定义嵌套函数的方式。

函数的嵌套调用:

函数带返回值的情况下可以赋值变量;

函数有直接输出的函数体时不可以赋值变量(因为赋值时,函数会直接输出,造成函数提前调用,变量赋值无效)

如下代码所示:

//应用函数的嵌套实现判断制定年份和月份对应天数的功能,将年份和月份作为函数的参数进行传递
function day(year,month){
   if (    ((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0) )
   {
switch(month){(不可以直接document.write("31天",否则调用时无法赋值给变量))
case 1: /* var t="31天"; return t;*/ return "31天";break;
case 2:return "29天";break;
case 3:return "31天";break;
case 4:return "30天";break;
case 5:return "31天";break;
case 6:return "30天";break;
case 7:return "31天";break;
case 8:return "31天";break;
case 9:return "30天";break;
case 10:return "31天";break;
case 11:return "30天";break;
case 12:return "31天";break;

}}else{
switch(month){
case 1:return "31天";break;
case 2:return "28天";break;
case 3:return "31天";break;
case 4:return "30天";break;
case 5:return "31天";break;
case 6:return "30天";break;
case 7:return "31天";break;
case 8:return "31天";break;
case 9:return "30天";break;
case 10:return "31天";break;
case 11:return "30天";break;
case 12:return "31天";break;
}
}
}
function riqi(year,month){
var x=day(year,month);
document.write(year+"年"+month+"月"+x);
    alert(year+"年"+month+"月"+x);
}
riqi(2016,1);


----------------------------------------------------------------------------------------------------------------------

嵌套函数的参数可以给内部函数和调用函数共同使用

如下代码所示:

//在选手演唱完毕后,三维评委分别给出分数,将三个分数的平均分作为该选手的最后的得分。周星星在演唱完毕后,

//三维评委/给出的分数分别为91,89,93,

//通过函数的嵌套调用获取周星星的最后的得分;
function getAverage(score1,score2,score3)
{
var average=(score1+score2+score3)/3;
return average;
}
function getResult(score1,score2,score3){
document.write("3个评委给出的分数分别为:"+score1+"分、"+score2+"分、"+score3+"分<br>");
var result=getAverage(score1,score2,score3);
document.write("周星星的最后得分为:"+result+"分");
}
getResult(91,89,93);// 此处一次传参数,共两个函数使用

document.write('</br>');


------------------------------------------------------------------------------------------------------

递归函数:递归函数就是在函数自身的函数体内调用自身,一般情况下,递归函数只在特定情况下才使用,比如处理阶乘问题。

语法如下:

function 方法名(参数1)

{

function 方法名(参数2);

}


例如,使用递归函数取得10!的值,其中10!=10*9!,而9!=9*8!,以此类推,最后1!=1,

这样的数学公式在javascript中即可以很容易的使用函数进行描述,也可以使用f(n)表示n!的值,

当1<n<10时,f(n)=n*f(n-1);当n<=1时,f(n)=1。

代码如下:

function f(num)//定义递归函数

{

if(num<=1){return 1;}//如果参数num的值小于或等于1,返回1

else{num*f(num-1);}//否则,调用递归函数

}

alert("10!的结果为:"+f(10));//调用函数输出10的阶乘

定义递归函数需要的两个必要条件:

★包括一个结束递归的条件。

如上面示例中的if(num<=1)语句,如果满足条件则执行return 1语句,不再递归。

★包括一个递归调用的语句。

如上面示例中的return f(num-1)*num语句,用于实现调用递归函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值