Node.js缓解对反斜杠的关注

时间:2015-06-22 11:37:09

标签: javascript node.js backslash

这个问题不是很重要,但是,我发现在将反斜杠记录到控制台时,不会按预期输出值。

请在终端中尝试以下两个示例来确认结果;我尝试过版本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只是造成这种行为的原因,但如果不是这种情况,那么我担心的是这个问题并不仅限于记录。

有人可以解释这种行为吗?


编辑:在两个示例中,安慰的字符串或对象都不应输出双反斜杠。

1 个答案:

答案 0 :(得分:0)

这仅限于使用Node的REPL。它似乎做了一些奇怪的逃避......有时候。

如果您只输入bcks,则会返回可复制值'\\'。但是,如果您console.log(),则会记录其实际值:\

我认为这可能与JSON.stringify()类似。