变量中未终止的字符串文字

时间:2011-08-07 07:10:38

标签: javascript

var MM = '\' + obj[0]['MM '] + '/';

使用此代码时出现两个错误...

  

丢失;在声明之前   未终止的字符串文字

4 个答案:

答案 0 :(得分:6)

字符\是“特殊的”,因为它用于允许在字符串中使用所有可打印字符。在您的情况下,'\'不是由唯一字符\组成的字符串,而是以单引号字符'开头的字符串的开头。

例如,如果你想要字符串Hello Andrea "6502" Griffini,你可以使用单引号

string1 = 'Hello Andrea "6502" Griffini';

如果您想在字符串中使用单引号,则可以执行相反的操作

string2 = "Hello Andrea '6502' Griffini";

但是如果你想在同一个字符串中使用两种引号怎么办?这是转义\字符派上用场的地方:

string3 = "'llo Andrea \"6502\" Griffini";

基本上\在引号或字符串中的双引号之前告诉javascript 以下字符只是一个普通字符,没有附加特殊含义

请注意,正则表达式中也使用了相同的字符...例如,如果要查找开括号[,则必须在其前面添加反斜杠,因为[位于常规表达式中表达具有特殊意义。

如果你在正常字符前放一个反斜杠,那么转义也用于在字符串中执行反向 ....你告诉javascript该字符确实很特别...示例

alert("This is\na test");

在上面的行中,\n序列表示换行符代码,因此显示的消息将分为两行(“This is”和“a test”)。

你现在可能想知道......如果我的字符串中需要反斜杠字符怎么办?在这种情况下,只需加倍。例如,在您的代码中使用'\\'

这是一个表格,用于表示字符串中反斜杠的可能含义

\"       just a regular double-quote character, it doesn't end the string
\'       just a regular single-quote character, it doesn't end the string
\b       a backspace character (ASCII code 0x08)
\t       a tab character (ASCII code 0x09)
\n       a newline character (ASCII code 0x0A)
\v       a vertical tab character (ASCII code 0x0B)
\f       a form feed character (ASCII code 0x0C)
\r       a carriage return character (ASCII code 0x0D)
\033     the character with ASCII code 033 octal = 27 ("ESC" in this case)
\x41     the character with ASCII code 0x41 = 65 ("A" in this case)
\u05D0   the unicode character 0x05D0 (Aleph from the Hebrew charset)
\\       just regular backslash character, not an escape prefix

答案 1 :(得分:2)

你需要正确地逃避反斜杠:

var lastMenstrualPeriod = '\\' + obj[0]['LastMenstrualPeriod'] + '/';

作为转义字符,JS“编译器”期望跟随另一个字符,例如\n是换行常量,\t是制表符等。所以\\是一个单一的反斜杠在一个字符串中。

Douglas Crockford book中也提到了这一点。

答案 2 :(得分:2)

\escape character。你必须加倍才能用字面意思反斜杠字符,否则会增加后面的字符(在这种情况下是下一个单引号)

答案 3 :(得分:1)

你忘了逃避'\'

这样做:

var lastMenstrualPeriod = '\\' + obj[0]['LastMenstrualPeriod'] + '/';