Javascript 类型。试图了解它是如何在引擎盖下工作的
Javascript type. Trying to understand how it works under the hood
我发现了一些关于 Javascript 的奇怪事情。例如,当我 运行 在节点 Shell 中(通过键入节点)时,有一些我不理解的语句。
> [] + []
'' (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 是如何工作的,以了解为什么我会得到这些结果(尤其是最后一个)
这个问题已经回答了很多次,这里是对正在发生的事情的简要概述:
> [] + []
= 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]
我发现了一些关于 Javascript 的奇怪事情。例如,当我 运行 在节点 Shell 中(通过键入节点)时,有一些我不理解的语句。
> [] + []
'' (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 是如何工作的,以了解为什么我会得到这些结果(尤其是最后一个)
这个问题已经回答了很多次,这里是对正在发生的事情的简要概述:
> [] + []
= 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]