var timeSplit = timeCaption.innerText.trim().split(' ');
将生成一个["10:00", "–", "18:00"]
var startStr = timeSplit[0].split(':');
将生成一个["10", "00"]
var res = startStr.map(parseInt);
将生成一个[10, NaN]
然而
var res = startStr.map(function (x) {
return parseInt(x);
});
正常工作,将产生"预期"数组[10, 0]
我希望每个字符串都传递给parseInt
,它会返回正确的整数值(并且单独执行也会产生正确的结果,就像工作代码一样)。
我在这里缺少什么?
编辑:我自己投票决定关闭这个问题。很明显的错误。大家好!
答案 0 :(得分:6)
parseInt
接受2个参数:
.map
使用3个参数调用您的函数:
如果你考虑一下,
parseInt("00", 1)
没有意义,它会返回NaN
。 parseInt
接受2到36之间的基数。
答案 1 :(得分:1)
parseInt
的第二个参数是基数或基数(如10,16等,默认为基数10)。 .map
将两个参数传递给回调,该索引处的值以及索引。因此,您正在调用parseInt(10, 0)
,它正试图找出基数为0的10。
答案 2 :(得分:0)
.map()
使用3个参数调用该函数:数组元素,数组索引和数组。 parseInt
有两个参数:要解析的字符串,以及要解析它的基数。
所以startStr.map(parseInt)
正在呼叫:
parseInt("10", 0, startStr);
parseInt("00", 1, startStr);
显然parseInt()
将radix = 0
视为无基数,因此默认为基数为10.但radix = 1
根本没有任何意义,因此返回NaN
。