我发现了一些关于Javascript的奇怪事情。例如,当我在一个节点Shell中运行时(只是输入node),有一些我不理解的语句。
> [] + []
'' (because [] is converted to an empty string ?)
> {} + []
0 (why 0 ?)
> x = ['10', '10', '10'] (this is ok)
['10', '10', '10']
> x.map(parseInt)
[ 10, NaN, 2 ] (really weird)
我想知道Javascript是如何工作的,以了解我为什么会得到这些结果(特别是最后一个)
答案 0 :(得分:4)
这已经多次回答了,这是一个快速概述正在发生的事情:
> [] + []
= String([]) + String([])
= [].join() + [].join()
= '' + ''
> {} + []
= {/*empty block */}; +[]
= Number([])
= Number(String([]))
= Number('')
= 0
> x = ['30', '20', '10']
> x.map(parseInt)
= [
parseInt('30', 0),
parseInt('20', 1),
parseInt('10', 2)
]
= [10, NaN, 2]