totolo 发表于 2020-6-25 14:11:05

JS函数返回undefined

本帖最后由 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>

qiuyouzhi 发表于 2020-6-25 14:56:41

你的fy_cx本来就没有返回值啊

totolo 发表于 2020-6-25 21:29:37

qiuyouzhi 发表于 2020-6-25 14:56
你的fy_cx本来就没有返回值啊

fy_cx()里重新计算了fy的值,最后输出的也是fy的值

wp231957 发表于 2020-6-27 08:51:32

totolo 发表于 2020-6-25 21:29
fy_cx()里重新计算了fy的值,最后输出的也是fy的值

看你这种代码写法,你干脆就不用函数就可以了
用了函数以后,没有返回值,没有调用,不懂函数吗????

陈立希2570 发表于 2020-6-29 09:07:10

fy = fy_init(kh);                              //生成对应类型的风压值
将这一行改为:
fy_init(kh);                              //生成对应类型的风压值

这个代码,一言难尽啊
将所有全局变量想办法收到函数内部去吧,函数执行后返回一个值,你这里的错误是使用全局变量来存值,函数又不返回值,又使用函数运行后的返回值来改写全局变量的值,唉呀,我自己都晕了

陈立希2570 发表于 2020-6-29 09:08:17

函数不使用return 返回值,返回的默认值是 undefined

陈立希2570 发表于 2020-6-29 09:11:30

totolo 发表于 2020-6-25 21:29
fy_cx()里重新计算了fy的值,最后输出的也是fy的值

输出?函数要返回值,用return返回值
页: [1]
查看完整版本: JS函数返回undefined