问答详情
源自:5-6 编程练习

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

<!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

提问者:Yilia要多读书 2015-12-06 16:14

个回答

  • 木子舟义
    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)之后才会执行。

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

    MARK一下,好好学习

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

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

  • 木子舟义
    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是因为函数没有返回值导致)。