为了账号安全,请及时绑定邮箱和手机立即绑定

为什么相等时,写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

正在回答

4 回答

每个载入浏览器的 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)之后才会执行。

3 回复 有任何疑惑可以回复我~
#1

Yilia要多读书 提问者

为啥我感觉 document.write(" 6 和 6 的较大值是:" + big(6, 6)); 是在调用函数big(6,6)之前执行的呢? 实在是抱歉,新手比较愚钝~请见谅!
2015-12-06 回复 有任何疑惑可以回复我~
#2

木子舟义 回复 Yilia要多读书 提问者

你看,在执行 document.write(" 6 和 6 的较大值是:" + big(6, 6));的时候是不是要把在里面的big(6,6) 先执行了并且获得返回值 才能执行完document.write(" 6 和 6 的较大值是:" + big(6, 6));这条语句。那就进入了big(6,6)的执行作用域。 进去函数了就会先输出那个两数相等了。
2015-12-06 回复 有任何疑惑可以回复我~
#3

Yilia要多读书 提问者 回复 木子舟义

好腻害,还是程序员呆萌可爱,谢谢~
2015-12-06 回复 有任何疑惑可以回复我~
#4

木子舟义 回复 Yilia要多读书 提问者

嘿嘿~继续努力吧~
2015-12-06 回复 有任何疑惑可以回复我~
查看1条回复

MARK一下,好好学习

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

Yilia要多读书 提问者

你语句不对吧~开始if之后 要么else if(条件){执行命令},要么最后直接else {执行命令}。不存在else 后面直接加条件的,只能if 后面直接加条件。不知道是不是解答了你的问题~
2015-12-09 回复 有任何疑惑可以回复我~
#2

不谙水性

应该是x==y
2015-12-09 回复 有任何疑惑可以回复我~

<!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是因为函数没有返回值导致)。

2 回复 有任何疑惑可以回复我~
#1

Yilia要多读书 提问者

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

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信