node.js REPL如何对其打印的对象进行字符串化?在使用包含键值对(?!)的数组遇到这种奇怪之后,我变得很好奇:
> var arr = [1]
undefined
> arr
[ 1 ]
> arr.key = "value"
'value'
> arr
[ 1, key: 'value' ]
典型的功能似乎不会产生[ 1, key: 'value' ]
。
> arr.toString()
'1'
> JSON.stringify(arr)
'[1]'
> require("util").inspect(arr, {showHidden: true})
'[ 1, [length]: 1, key: \'value\' ]'
最后一个几乎是,但还有[length]
(澄清一下,引号显然不重要)。我正在运行节点 v0.10.33 。
答案 0 :(得分:2)
你几乎就在那里; util.inspect返回一个字符串,并在没有showHidden
的情况下调用:
> require("util").inspect(arr)
'[ 1, key: \'value\' ]'
> console.log( require("util").inspect(arr) )
[ 1, key: 'value' ]
如果您将字符串记录到控制台,它将用引号括起来,但console.log
不会这样做。如果您要验证inspect
的输出与console.log
的输出完全相同,请将> require("fs").writeFileSync("dump.txt", require("util").inspect(arr));
的输出写入文件:
$ cat dump.txt
[ 1, key: 'value' ]
在你的控制台中:
var fn = function() {}
fn.key = "value";
关于第一段:
包含键值对的数组(?!):
不奇怪 - 数组是对象,所以它非常有效。但是对于查看代码的其他人来说可能会让人感到困惑。 : - )
这样做与此没什么不同:
{{1}}
如果您要记录它,它看起来就像您的数组示例。