Javascript:无法在IE中转义反斜杠

Javascript:无法在IE中转义反斜杠,javascript,internet-explorer,escaping,backslash,Javascript,Internet Explorer,Escaping,Backslash,非常简单,我想给一个变量分配一个反斜杠字符的值。问题是: var myVar = '\'; // breaks because the backslash escapes the closing quote var myVar = '\\'; // now myVar has two backslashes 我所能找到的一切都表明,用反斜杠来逃避反斜杠,这是我一直知道的普遍真理。然而,当我在IE中运行时,我得到了两个反斜杠,而不是一个 这是IE调试器试图用a替换a的截图。这个问题

非常简单,我想给一个变量分配一个反斜杠字符的值。问题是:

var myVar = '\';     // breaks because the backslash escapes the closing quote
var myVar = '\\';    // now myVar has two backslashes
我所能找到的一切都表明,用反斜杠来逃避反斜杠,这是我一直知道的普遍真理。然而,当我在IE中运行时,我得到了两个反斜杠,而不是一个

这是IE调试器试图用a替换a的截图。这个问题发生在我试图用字符串文字转义反斜杠的任何地方-string.replace()函数会产生相同的错误

[编辑]

谢谢你的评论。短期内,我可能会使用一些人推荐的八进制或十六进制ascii。但我真正想要的是理解为什么我不能逃避反斜杠

这里有一个没有string.replace函数的更好的屏幕截图。同样的结果


[/Edit]

如果这太麻烦您了,请使用八进制或十六进制ascii码;)

尝试使用以下方法:

var backslash = String.fromCharCode(92);
例如:

编辑: 我认为没有必要使用
replace
功能。你为什么不这样做呢?这在IE中对我很有用

if( dirPath === "#" ) dirPath = '\\'; 

它显示的是
\
而不是
\
,这对我来说很有意义。看这行,它有引号


因此,如果字符串
“\\nope”
“\nope”
完全不同。现在,如果调试器在字符串周围没有引号,我只需要一个斜杠。

结果表明@Prusse做得对:逃避反斜杠不是问题,问题是IE调试器将
'\'
呈现为
'\'
。在我的例子中,我有一个潜在的问题,其表现方式与损坏的字符串相同,因此需要一段时间才能找到这个问题

解决方案:

你有试着提醒它吗?(带有警报(myVar))
-普鲁士


我无法读取屏幕截图,但
var myVar='\\'
将在字符串中产生一个反斜杠字符。制作一个JSFIDLE或粘贴代码和指令以复制您正在使用/查看的ie的哪个版本?猜测它只是显示调试器中转义的转义字符。你有试着提醒它吗?(使用
alert(myVar)
)很可能是因为他所担心的问题根本不存在。一个
警报(dirPath)
就可以证明这一点。这是一个有效的问题,因为调试器的“正确”行为是不明确的
'\'
'\\'
都是一个反斜杠的逻辑表达式,它们以各自的方式表示。考虑到Chrome、Firefox和Opera的检查器都将值显示为
'\'
,这似乎不是一个愚蠢的错误。我认为这是一个非常有用的信息,我想这只是一个简单的演示;也就是说,一旦代码实际在做一些事情,
dirPath
就可以包含各种各样的东西。如果不是这样,那么是的,你是对的@没错。看起来OP实际上用一个新的截图更新了他的答案,截图是
dirPath='\\\'。。。如果它里面有各种各样的东西,他们需要
If(dirPath.indexOf(“#”)>=0).
当你明白它在做什么以及为什么这样做时,这并不是一个问题。引号中的字符串(当实际值没有引号时)通常意味着它是一个字符串文字,并且是一条线索,表明它显示为语言希望您键入它的样子(例如:
“\”
将不是有效的JS字符串文字,但
“\\”
是,因此调试器会显示它),但是,除非你仔细考虑这个问题,否则这似乎是违反直觉的。这是个人观点,但与每个(受尊敬的)浏览器的行为一致。但最终这归结为用户的期望,这使它完全超出了逻辑的范畴;)是的。我会的。我认为,任何JS调试器或web浏览器不这样做都是一团糟。(遗憾的是,其中包括了Chrome,看起来……我可能会提交一份bug报告。)所以,FireBug也坏了。(我说的是FF的内置“web控制台”,其中包括一个做正确事情的REPL。)喜欢anon downvotes,这种推理是有效的,IE的调试器并不是唯一一个这样做的调试器。