函数调用问题

函数调用问题

//根据出身年月日来计算天数,如:您的生日是在2001年第257天!
var s,i,y,m,d;
ymdFun();
function ymdFun(){
  var s=0,
      y=parseInt(prompt("请输入您的出生年份")),
      m=parseInt(prompt("请输入您的出生月份")),
      d=parseInt(prompt("请输入您的出生日期")); 
 
}


dateFun();
function dateFun(){
   for(i=0;i<m-1;i++){      //输入3月,
       s+=arguments[i]; //31 29
     }
       s+=d;
    if(y%4==0 && y%100!==0 || y%400==0 && m>2){
       s+=1;
    }
    document.write("您的生日是第"+s+"天");
}
dateFun(31,28,31,30,31,30,31,31,30,31,30,31);

老师,第二个函数该怎么调用,我的月份本来就是用调用的方法输入到函数里面去的,现在二次调用结果天数是NaN

http://img1.sycdn.imooc.com//climg/5b7d19280001cd4a10070747.jpg

http://img1.sycdn.imooc.com//climg/5b7d18490001715708560335.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

不知道同学二次调用干什么 , 本作业中只需一次就可以 . 代码输出NaN是因为 如下:

http://img1.sycdn.imooc.com//climg/5b7d20550001b73b06430110.jpg

函数中使用var定义了年月日变量 ,所以为局部变量 , 弹窗赋值也是给局部变量赋值 , 全局变量中的变量并没有初始化为undefined哦 , 建议如下优化更好:

http://img1.sycdn.imooc.com//climg/5b7d20d100018ca509300594.jpg

完善一下吧 ,祝学习愉快 ,望采纳

  • 慕桂英2998029 提问者 #1
    如上截图:dateFun(31,28,31,30,31,30,31,31,30,31,30,31); 因为计算日期天数时,我是调用这个函数,传了这批数组进去,然后才能进行计算的,所以这里是不是算已经调用一次了。现在封装函数的时候,又需要调用一次,就发现这样写是有问题的是不是? 老师这里的arr 是用数组对象 来传入这批日期值吗?还是,我可以随便定义一个参数来输入数组
    2018-08-22 16:56:31
  • 好帮手慕夭夭 回复 提问者 慕桂英2998029 #2
    没错哦 ,根据你的描述是调用了一次 , 所以再调用出现问题 . 函数的参数中尽量少传入那么多的参数 ,像日期就可以使用一个数组存放 ,然后遍历输入进行累加天数更方便哦 , 函数中传入年月日作为参数 , 同学按照老师给出的方式更好哦
    2018-08-22 17:23:54
  • 慕桂英2998029 提问者 回复 好帮手慕夭夭 #3
    是的,终于完成了,这么简单的一个作业还有那么多的问题,有点扎心了老师 伤心ing 谢谢老师!
    2018-08-22 17:54:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师