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

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


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

https://img1.sycdn.imooc.com//5beb6ea90001a88504140091.jpg

返回return的情况https://img1.sycdn.imooc.com//5beb6eaa0001506205380230.jpg

https://img1.sycdn.imooc.com//5beb6eaa0001ad2e03080068.jpg

正在回答

3 回答

通过控制台调试可以发现,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 "两数相等";给函数加上返回值看看效果哦~

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

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

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

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

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

举报

0/150
提交
取消

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

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