5

我有一个关于在 JavaScript 中转义字符的问题,希望您能提供帮助。假设我有以下 JavaScript 代码:

document.write("<img src=\"http://www.google.com\" />");

现在在上面的示例中,您可以看到我已经开始document.write使用双引号",因此为什么我需要转义 < 中的引号img src="" />以确保 JavaScript 仍然认为它是一个字符串。

但在下面的示例中,您可以看到我使用单引号'来开始document.write语句。我的问题是我还需要转义双引号吗?我知道如果没有这个声明将起作用,但最佳实践是什么?

document.write('<img src=\"http://www.google.com\" />');  

我问的原因是我写了一个条件语句,它会触发一个图像(根据上面的行),但它似乎没有工作,并排除了可能导致这种情况的所有可能性。我几乎每天都会遇到这样的事情,所以任何帮助都将不胜感激。这可能是一个愚蠢的问题,所以提前道歉......

4

5 回答 5

13

使用单引号时,您只需要转义单引号,而不是双引号。

(编辑:反之亦然!)

于 2012-05-22T09:59:04.307 回答
3
document.write('<img src="http://www.google.com" onClick="foo(\'bar\');" />'); 

您只需要转义您正在使用的相同类型的引号。

于 2012-05-22T10:00:54.637 回答
3

到现在为止,您已经了解了情况:无需转义您未用作该特定字符串分隔符的引号。但是:最佳实践是另一回事。我知道有些人会告诉你“总是转义引号”是养成的好习惯。我不同意。与其他一些语言不同,JavaScript 在转义字符方面相当宽松:在您的第二个示例中,不会打印出反斜杠。

情况并非总是如此,所以我的建议是:在使用的引号中保持一致(单 || 双),并且只转义需要转义的引号。根据您使用的其他语言,您可能需要考虑一下您将使用哪些引号。例如,如果您使用 PHP,请坚持使用单引号,因为双引号不仅仅用于分隔字符串。如果您习惯于编写类 C 语言(或 Java),最好保持使用双引号的习惯,因为这些语言中单引号和双引号之间的区别更大

于 2012-05-22T10:07:50.713 回答
1

document.write('<img src="http://www.google.com" />');会工作得很好。

同样重要document.write("<img src='http://www.google.com' />");

于 2012-05-22T10:00:48.750 回答
0
<html>
<body>

<script type="text/javascript">

document.write(escape("<img src=\"http://www.google.com\" />"));

</script>

</body>
</html>
于 2012-05-22T10:01:24.337 回答