为什么相等时,写document.write("两值相等“);会出错?函数调用一定要return么?

来源:5-6 编程练习

Yilia要多读书

2015-12-06 16:14

<!DOCTYPE  HTML>

<html >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>函数</title>


<script type="text/javascript">


//定义函数


function big(x,y)

{

    if(x>y)

    {return x;}

    else if(x<y)

    {return y;}

    else

    {document.write("两数相等");}

    

}

//函数体,判断两个整数比较的三种情况

 

//调用函数,实现下面两组数中,返回较大值。

  document.write(" 5 和 4 的较大值是:"+big(5,4)+"<br>");

  document.write(" 6 和 3 的较大值是:"+big(6,6)); 


</script>

</head>

<body>

</body>

</html>

结果为

5 和 4 的较大值是:5
两数相等 6 和 6 的较大值是:undefined

写回答 关注

4回答

  • 木子舟义
    2015-12-06 16:33:23
    已采纳

    每个载入浏览器的 HTML 文档都会成为 Document 对象。
    Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

    你传入的 big(6,6)方法中 6和6两个参数 在if  else if 中都不匹配,所以进入了else   

    在else中调用了document对象上的write方法。就立即执行了这个并输出了 两数相等的文本内容。

    上述内容还是在big函数执行的阶段。

    而你最后要输出的  document.write(" 6 和 6 的较大值是:" + big(6, 6)); 是在调用函数big(6,6)之后才会执行。

    木子舟义 回复Yilia要...

    嘿嘿~继续努力吧~

    2015-12-06 16:51:19

    共 4 条回复 >

  • uwenhao2008
    2015-12-11 17:19:57

    MARK一下,好好学习

  • 君如玉心
    2015-12-09 10:48:19

    为什么在else加x=y 就不会出现了啊

    不谙水性

    应该是x==y

    2015-12-09 15:55:14

    共 2 条回复 >

  • 木子舟义
    2015-12-06 16:19:06

    <!DOCTYPE  HTML>

    <html>


    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <title>函数</title>

        <script type="text/javascript">

        //定义函数


        function big(x, y) {

            if (x > y) {

                return x;

            } else if (x < y) {

                return y;

            } else {

                return '两数相等';

            }


        }

        //函数体,判断两个整数比较的三种情况


        //调用函数,实现下面两组数中,返回较大值。

        document.write(" 5 和 4 的较大值是:" + big(5, 4) + "<br>");

        document.write(" 6 和 6 的较大值是:" + big(6, 6));

        </script>

    </head>


    <body>

    </body>


    </html>


    document.write("xxx")  在执行这条语句的时候就已经在html中渲染了。输出的undefined 不是出错了。而是你的函数没有返回任何值,所以是undefined   两数相等被渲染在了   6 和 6 的较大值是:  之前 

    也就是   两数相等 6 和 6 的较大值是:  undefined(这个undefined是因为函数没有返回值导致)。

    Yilia要...

    哇塞~又是大神您啊~ 您的渲染我理解为执行,可以不? 我仍然不理解为什么要先渲染document.write("xxx") ,而且它既要在第一个比较结束,第二个比较之前,并且第二个比较要进入这个else语句。 小的在此谢过~

    2015-12-06 16:27:28

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题