在Javascript中添加双引号

时间:2017-01-28 10:59:45

标签: javascript

我想了解该代码背后的逻辑:

var myName = "John";

document.write("\""+ myName +"\"");

我得到了我想要的东西,即broswer用双引号显示“John”,但我不明白为什么我必须在字符串之前和之后使用+以及为什么要逃避seq。必须以这种方式使用。

6 个答案:

答案 0 :(得分:6)

您的代码很容易受到字符串注入!如果myName包含引号怎么办?

相反,您应该使用JSON.stringify

var myName = 'John"abc';
'"' + myName + '"';     // "John"abc"
JSON.stringify(myName); // "John\"abc"

您可能也希望逃避U + 2028和U + 2029.

答案 1 :(得分:2)

加号用于连接字符串,反斜杠用于告诉JS"嘿,这不是结束的doble引号,我想要实际的符号"。您也可以使用对您有利的doble和单引号。

var myName = 'John';
document.write('"' + myName + '"');

Js Fiddle

答案 2 :(得分:2)

您可以使用JSON.stringify实现相同目标。或许"'" + myName + "'",没有逃脱。

需要执行操作的原因是因为您在指定"John"时使用的引号实际上不是字符串的一部分。它们有一点语法告诉编译器,它们内部的任何内容都是您指定为字面值的字符串值(而不是从用户或其他数据源读取)。但是,值本身只是John,没有引号。当您打印它时,JavaScript只会将其打印为John。您需要自己添加引号或任何额外的装饰。

答案 3 :(得分:0)

请参阅一些基本书或w3schools了解JS的基础知识。

var myName = "John";

这里myName的值为John而没有引号。引号是JS识别任何字符串的方式。引号内的任何文本在JS中都被识别为String。

现在,当您还要显示引号时,您需要将引号作为字符串的一部分

所以“\”“基本上是围绕引号覆盖(”)。在JS(+)中,加号用于连接两个字符串。

希望这能澄清你的问题!!

答案 4 :(得分:0)

转义字符\就像是对编译器的提示。

通过指定转义,编译器知道以下"字符是一个字符串,并且它不应该是您的编程代码的一部分。

E.g。编译器将看到字符串" helloWor \" ld" as" helloWorld"。

+运算符充当字符串连接运算符。也就是说,编译器将尝试将2个字符串连接成一个。 例如。 "he" + getString() + "llo"会给你heXXXllo,假设函数getString()返回值XXX

答案 5 :(得分:0)

在javascript字符串中,字符包含单引号或双引号。如果你在字符串中想要使用实际的单/双引号,你必须“逃避”它。这是通过反斜杠字符完成的。解决它的方法是使用你在字符串中使用的不同的包装引号。见下文

document.write("\"" + myName + "\""); // escaped

document.write('" + myName + "'); // not escaped

加号字符用于连接字符串。在您的示例中,quote加上变量加引号,执行到“John”