为什么即使没有调用显式打印方法(例如document.write),函数的返回值也会打印?

Why does the return value of a function print even though no explicit printing method is called (ex. document.write)?

本文关键字:函数 write 返回值 打印 document 例如 调用 方法 式打印 为什么      更新时间:2023-09-26

我几天前刚开始使用javascript,正在尝试不同的方法来打印函数的返回值。

<script>
function produceMessage(){
    var msg= 'This should print';
    return msg;
}
</script>
<span id="mySpan"></span>

这两行代码都调用了write或createTextNode等方法来打印消息。

document.body.appendChild(document.createTextNode(produceMessage()));
document.write(produceMessage());

然而,这一行没有调用这样的方法,但返回值仍然打印。

document.getElementById('mySpan').innerHTML=produceMessage();

我的直觉告诉我,为了让返回值出现在屏幕上,你需要调用某种方法来打印它,就像下面的例子:

document.getElementById('mySpan').innerHTML=document.write(produceMessage());

然而,这是不正确的,导致未定义的输出

将元素的innerHTML设置为字符串会导致该元素的HTML被更改为该字符串。

document.getElementById('mySpan').innerHTML=produceMessage();
  • 呼叫produceMessage()
  • 设置id为mySpan的元素的innerHTML为result

您的函数produceMessage返回一个字符串,因此该元素的innerHTML设置为This should print

你的下一个语句,

document.getElementById('mySpan').innerHTML=document.write(produceMessage());
  • produceMessage()
  • 用结果调用document.write(),将This should print追加到文档
  • 设置id为mySpan的元素的innerHTML为document.write的返回值

document.write返回undefined,因此该元素的innerHTML被设置为undefined的字符串表示。