var MM = '\' + obj[0]['MM '] + '/';
使用此代码时出现两个错误...
丢失;在声明和之前 未终止的字符串文字
答案 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'] + '/';