Javascript类型。试图了解它如何在引擎盖下工作
问题描述:
我发现了一些有关Javascript的奇怪的东西。例如,当我在一个Shell节点中运行(只需键入节点),有一些我不明白的语句。Javascript类型。试图了解它如何在引擎盖下工作
> [] + []
'' (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引擎盖下是如何工作的理解,为什么我得到这些结果(特别是最后一个)
答
这已经已经回答了很多次,这里发生了什么事的快速大纲on:
> [] + []
= 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]
在'Tricky使用案例'部分的'map()'的mdn文档中提到了最后一个示例:https://developer.mozilla.org/en-US/docs/ Web/JavaScript/Reference/Global_Objects/Array/map。总之,问题来自可选的功能参数。 – httpNick
如果您想了解事物设计的工作原理,ECMAScript规范是您需要查看的地方。现在,这是常见问题的积累。 – 2016-09-19 21:41:18