这个问题很老,但我想给出一个清晰的答案,并解释为什么会发生这种情况,以帮助其他人:
首先,问题中的JavaScript代码行没有任何问题。它是完全有效的,不会产生任何解析错误。Vitalmax遇到问题的原因很可能是他/她没有发布包围该行代码的其他代码。
这里有一个PHP示例,展示了为什么JS解析器会抱怨语法:
<?php
echo "alert('Hello again! This is how we\nadd line breaks to an alert box!');";
?>
解析后的服务器端输出如下(这就是浏览器收到的内容):
alert("Hello again! This is how we
add line breaks to an alert box!");
在JavaScript中,字符串
不能有真正的换行符。相反,它们必须始终被转义(例如:\n),这样浏览器就会在真正的换行处报告“未终止的字符串文字”。有一些例外情况,例如对于水平制表符(\t)。因此,在这种情况下,您必须使用\\n两次转义换行符。因此,当PHP解析并将其从\\n转换为\n时,JavaScript可以将其从\n转换为
[真正的换行]。
正确的PHP示例应该是:
<?php
echo "alert('Hello again! This is how we\\nadd line breaks to an alert box!');";
?>
或者:
<?php
echo 'alert("Hello again! This is how we\nadd line breaks to an alert box!");';
?>
在第二种情况下,您不必进行双重转义,因为在单引号PHP字符串中转义的字符不会被解码(\n保持不变)。
*注意:可以使用特殊的引号符`,它允许JS中进行真正的换行。示例:
alert(`Hello again! This is how we
add line breaks to an alert box!`);
alert("你好!这就是我们如何" + String.fromCharCode(10) + "向警告框添加换行符!");
} - Pave}
后,该函数运行正常。 - Esailija"\n"
不需要分开,只需说"...我们如何添加行..."
。 - nnnnnn