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

为什么返回return和返回document.write后显示的顺序不一样呢?


返回打印的情况https://img1.mukewang.com/5beb6ea90001575005350227.jpg

https://img3.mukewang.com/5beb6ea90001a88504140091.jpg

返回return的情况https://img3.mukewang.com/5beb6eaa0001506205380230.jpg

https://img1.mukewang.com/5beb6eaa0001ad2e03080068.jpg

提问者:小璐小璐哎 2018-11-14 08:42

个回答

  • 慕移动0851642
    2018-11-15 03:53:45
    已采纳

    通过控制台调试可以发现,document.write()中的内容,是先执行函数部分,得到函数结果后才打印结果。举个栗子,比如document.write(1+2),如果内容是顺序打印出来,那结果还会是3么(笑)就是说,内容不是顺序打印下来,而是确定了要打印什么内容后,一次性全部打印出来。然后document.write()本身就是一个函数,定义一个变量去获取document.write()的返回值,发现是undefined(其实JS中的函数都是有返回值的,不定义返回值那默认就是undefined)。那么到这里再重新理一下代码的执行顺序:document.write("9和9的较大值是:"+compare(9,9));  先是为了确定要输出的内容,执行了函数,在函数中遇到了document.write('两个数一样大'),所以先输出了内容"两个数一样大",接着compare(9,9)这个函数就算执行完了,由于这个函数没定义返回值,默认返回了undefined,这时候document.write("9和9的较大值是:"+compare(9,9));要输出的内容就确定了,一次性输出出:9和9的较大值是:undefined,你可以试试在document.write('两个数一样大')后面再添加一句return "两数相等";给函数加上返回值看看效果哦~

  • 慕用5234234
    2018-11-14 13:52:45

    你可以这样用,var result=compare(9,9),将返回的结果存在result里面,再输出打印document.write(result),这个函数compare()返回的是一个值,而不是打印输出,如果要打印就得再次调用document.write,而document.write("两个数一样大")的情况下,调用函数就会打印输出,不存在返回值,就不能用result=compare(9,9)接收返回的值了

  • 慕用5234234
    2018-11-14 13:51:40

    你可以这样用,var result=compare(9,9),将返回的结果存在result里面,再输出打印document.write(result),这个函数compare()返回的是一个值,而不是打印输出,如果要打印就得再次调用document.write,而document.write("两个数一样大")的情况下,调用函数就会打印输出,不存在返回值,就不能用result=app2(2,3)接收返回的值了