首页 新闻 会员 周边 捐助

为什么计算到我输出的那个数字的时候f回事undefined

0
悬赏园豆:5 [已解决问题] 解决于 2016-06-07 17:48
function throw_(x){
    if(x<0){
        throw new Error("x不能为负数")
    }else{
        for (var f=1;x>1;f*=x,x--){
            document.write(f+"<br/>")
        }    
    }
}
try{
    var n=Number(prompt("请输入一个正整数",""));
    var f=throw_(n);
    document.write(f);
    alert(n + " = " +f);
}
leestar的主页 leestar | 初学一级 | 园豆:191
提问于:2016-06-07 11:51
< >
分享
最佳答案
0

你的throw_这个函数没有返回值吧?

收获园豆:5
加洲旅馆2012 | 小虾三级 |园豆:503 | 2016-06-07 16:07

我加个这个return 函数里面的for循环就只能执行一次

leestar | 园豆:191 (初学一级) | 2016-06-07 17:26

@leestar: 肯定只执行一次啊。你把return f写在for循环外面,循环完在return f回去

加洲旅馆2012 | 园豆:503 (小虾三级) | 2016-06-07 17:41

@加洲旅馆2012: 嗯  谢谢

leestar | 园豆:191 (初学一级) | 2016-06-07 17:48
其他回答(2)
0

这个是代表你这个f没定义。

郑小豪 | 园豆:154 (初学一级) | 2016-06-07 13:46

定义了的呀,如果没定义的话直接就会报错了

支持(0) 反对(0) leestar | 园豆:191 (初学一级) | 2016-06-07 17:23
0

throw函数的返回值是什么?没有的话就是undefined。

逐影 | 园豆:982 (小虾三级) | 2016-06-07 15:19

我这样写 return f的话上面的for就只会执行一次 

支持(0) 反对(0) leestar | 园豆:191 (初学一级) | 2016-06-07 17:25

@leestar: 不太明白你是要取每个过程f的值还是f的最终值。如果取过程值可以用个数组把每个值保存起来,然后返回这个数组,如果取最终值,可以在for循环体外return f。

支持(0) 反对(0) 逐影 | 园豆:982 (小虾三级) | 2016-06-07 18:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册