这个问题不是很重要,但是,我发现在将反斜杠记录到控制台时,不会按预期输出值。
请在终端中尝试以下两个示例来确认结果;我尝试过版本0.10和0.12,并且还试过替换' \\'与UTF十六进制代码和字符代码等等...行为是相同的。
使用String.replace()
的示例一。我最初使用正则表达式模式发现了这种意外行为,类似于.replace(/([*\-\[\] etc...])/g, '\\$&')
,但是,下面的代码简化了这种情况。
var bcks = '\\', str = 'Hello*';
console.log('Backslash', bcks, '\nString', str);
str.replace('*', bcks);
其输出如下:
Backslash \
String Hello*
'Hello\\'
示例2,同时在对象的值中使用反斜杠。在使用.replace(etc ...)
时也发现了这种情况,但在将其减少到以下后,意外行为仍然很明显。
var tmp = {key: 'Hello\\'}; console.log(tmp); console.log(tmp.key);
其输出如下:
{ key: 'Hello\\' }
Hello\
可能stdout
只是造成这种行为的原因,但如果不是这种情况,那么我担心的是这个问题并不仅限于记录。
有人可以解释这种行为吗?
编辑:在两个示例中,安慰的字符串或对象都不应输出双反斜杠。
答案 0 :(得分:0)
这仅限于使用Node的REPL。它似乎做了一些奇怪的逃避......有时候。
如果您只输入bcks
,则会返回可复制值'\\'
。但是,如果您console.log()
,则会记录其实际值:\
。
我认为这可能与JSON.stringify()
类似。