2015-11-19 153 views
-2

我发现节点v0.10有一定的行为,我无法在Chrome中进行复制。它会自动将之前所有的\“NodeJS处理对象时的单引号

因此,这将是脚本和输出:

var test = "'test"; 
var testObj = {test:test}; 

console.log(test); // => 'test 
console.log(testObj); // => {'test':'\'test'} 

在浏览器控制台,我没有看到\自动背后每一个附加” 这是很好的和正常节点的行为?这是我目前对使用某个NPM包时遇到的问题的怀疑,但我似乎无法强制节点不能逃脱单引号。

+0

我很确定它只是出现在'console.log'上,因为它试图将它表示为一个有效的对象。 –

+0

没有区别!您的浏览器会在向您显示输出前对输出进行优化,请尝试将其粘贴到Chrome控制台中:'“\”“' – andlrc

回答

0

这只是console.log()从Chrome到node.js中它对代码的执行没有任何影响。

console.log()的node.js实现尝试将'test显示为有效的Javascript字符串。由于默认情况下,它们是带有单引号的字符串,如果它们是属性值,则显示该字符串的唯一方法是通过转义嵌入的单引号。

这种差异不应该以任何方式影响您的运行代码。底层Javascript属性在两种情况下都是相同的。这只是console.log()的实现差异,它不受任何开放标准的支配,因此每个实施者都会自行选择如何显示console.log()输出。