“document.write('hello world\n');”和“document.writeln('hello world');”有什么区别?

7
< p > document.write('hello world\n');document.writeln('hello world'); 有什么区别?

编辑

我的问题是输出的区别。


你需要在 document.write("hello world\n") 中使用 " 来输出换行。 - thomasmalt
@thomasmalt:在JavaScript中不需要这样做。 你是想到PHP或Ruby了吗? - Tim Down
Gear-solid - 我知道你做了很多前端工作。我正在追踪前端错误并记录所有的错误。你能通过AIM或电子邮件联系我,直接向我报告错误吗? - meder omuraliev
7个回答

13

历史上,writeln旨在处理不同的换行约定,其中\n只是其中之一。

不同的换行约定有不同的写法。在UNIX上,'\n'是换行标记,在Mac上是'\r'(据我所知,现在已经变成了UNIX),而'\r\n'则是DOS/Windows的标记。在其他语言中,使用writeln应该会自动使用所需平台上的正确标记,但我不知道JavaScript的document.writeln是否会自动使用正确的标记。


在MS domWeb.js中,writewriteln具有相同的实现,与换行无关。Document.write = function(content) { _setInnerHTML(this, content); }; Document.writeln = function(content) { _setInnerHTML(this, content); }; - Sandburg

8

我认为他知道这一点,他所问的是使用仅添加行的writeln与使用在字符串末尾添加换行符\n的write并添加换行符之间的区别。 - awe
4
我不会对此进行点踩,但是w3schools并不具备JavaScript权威性。 - Tim Down

4

理论上,writeln()会在字符串末尾添加一个换行符。

实际上,由于你正在使用Javascript,如果你正在生成HTML,那么没有多余的空格也不会有太大的区别,因为HTML会忽略它们。


仔细阅读问题:他的“write”示例还使用字符串末尾的“\n”字符写入换行符。 - awe
1
Spudley:并不完全正确:在HTML中,空格可以具有重要意义。例如,在两个<img>元素之间的空格将引入可见的间隔。 - Tim Down
1
@Tim:是的,这就是我使用“额外”(例如额外的空格)和“小”的原因(例如小的实际差异)。正如你所说,确实存在差异。但在实践中,大多数使用document.write()或writeln()(根据我的经验)是为了生成文本块而不是完整的HTML,在这种情况下,他们可能看不到任何区别。 - Spudley

1

据我所知,它们之间没有区别。你最终会得到一行,在行末有一个“换行符”,因此下一个要显示的文本将出现在下一行。

如果这是一个棘手的问题,对不起我的无知:)


1

document.write()会在文档中写入内容,但不会在末尾添加换行符。 document.writeln()会在文档中写入内容,并在末尾添加换行符。


他知道这个,他问的是直接使用待添加的行调用writeln与使用\n在字符串末尾调用write并添加换行符之间的区别。 - awe
@awe 但是答案不是很明显吗?使用document.writeln()的好处在于您无需手动将\n写入字符串中,也许您不需要考虑使用\r\n作为行分隔符的平台,但如果输出是由浏览器消耗的网页,那就无所谓了。 - thomasmalt

0

让我们以这个为例:

write()的输出结果: Hello World!Have a nice day!

请注意,write()在每个语句后面不会添加新行。

writeln()的输出结果: Hello World! Have a nice day!

请注意,writeln()在每个语句后面添加新行。


0

document.write会在同一行输出内容,而document.writeln会在下一行输出内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接