鱼C论坛

 找回密码
 立即注册
查看: 3950|回复: 6

[技术交流] JS函数返回undefined

[复制链接]
发表于 2020-6-25 14:11:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 totolo 于 2020-6-25 14:14 编辑

各位大佬,js函数返回undefined是怎么回事?

以下js代码主要实现:
        按下查询按钮
                如果查询次数为0,则生成一个在规定数值范围内的风压值并显示
                否则,计算经过一段时间dt后风压的剩余量并显示

        运行结果:
                fy_init: 600
                time_sub: 871
                fy_cx: undefined

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

<!DOCTYPE html>
<html>
        <head>
                <style>
                        div
                        {
                                width:100px;
                                height:40px;
                        }
                </style>
       
        <script>       
                var fy;                        //风压值
                var cx_num = 0;        //查询次数
                var time;                        //首次查询的时间
                var x;                        //风压随机值
       
                function fy_cx(kh)
                {
                        if(cx_num == 0)
                        {
                                fy = fy_init(kh);                                //生成对应类型的风压值
                                time_sub();                                //得到第一次查询时的时间
                        }
                        else
                        {
                                var dt = time_sub();
                                fy = parseInt(fy - (0.33 * dt));       //计算经过时间dt后,剩余风压量
                        }
                        document.getElementById("fy_cx").innerText = "fy_cx:" + fy;
                        cx_num++;
                }

                function fy_init(kh)
                {
                        if(kh == "KE")
                        {
                                do
                                {
                                        fy = fy_random();
                                }
                                while(fy <= 598 || fy >= 605)
                        }
                       
                        else
                        {
                                do
                                {
                                        fy = fy_random();
                                }
                                while(fy <= 498 || fy >= 505)
                        }
                        document.getElementById("fy_init").innerText = "fy_init:" + fy;
                }

                function time_sub()
                {
                        if(cx_num == 0)
                        {
                                var timea = new Date();
                                time = timea.getHours() * 60 + timea.getSeconds();                //得到第一次查询时的时间
                        }
                        else
                        {       
                                var nt = new Date();
                                return ((nt.getHours() * 60 + nt.getSeconds()) - time);                //计算据第一次查询的时间间隔dt
                        }
                        document.getElementById("time_sub").innerText = "time_sub:" + time;
                }

                function fy_random()
                {
                        x = parseInt(Math.random() * 100);                                //生成三位的随机数
                        if(x < 100)
                        {
                                x = x * 10;
                        }
                        return x;
                }
                </script>
        </head>

        <body>
                <input type = "button" value = "click me"  onclick = "fy_cx('KE')">
                <div id = "fy_init"></div>
                <div id = "time_sub"></div>
                <div id = "fy_cx"></div>
        </body>
</html>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-25 14:56:41 | 显示全部楼层
你的fy_cx本来就没有返回值啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-25 21:29:37 | 显示全部楼层
qiuyouzhi 发表于 2020-6-25 14:56
你的fy_cx本来就没有返回值啊

fy_cx()里重新计算了fy的值,最后输出的也是fy的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-27 08:51:32 From FishC Mobile | 显示全部楼层
totolo 发表于 2020-6-25 21:29
fy_cx()里重新计算了fy的值,最后输出的也是fy的值

看你这种代码写法,你干脆就不用函数就可以了
用了函数以后,没有返回值,没有调用,不懂函数吗????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-29 09:07:10 | 显示全部楼层
fy = fy_init(kh);                                //生成对应类型的风压值
将这一行改为:
fy_init(kh);                                //生成对应类型的风压值

这个代码,一言难尽啊
将所有全局变量想办法收到函数内部去吧,函数执行后返回一个值,你这里的错误是使用全局变量来存值,函数又不返回值,又使用函数运行后的返回值来改写全局变量的值,唉呀,我自己都晕了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-29 09:08:17 | 显示全部楼层
函数不使用return 返回值,返回的默认值是 undefined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-29 09:11:30 | 显示全部楼层
totolo 发表于 2020-6-25 21:29
fy_cx()里重新计算了fy的值,最后输出的也是fy的值

输出?函数要返回值,用return返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表