意外的“映射”结果(Javascript)
有人能解释一下为什么会产生意想不到的结果:意外的“映射”结果(Javascript),javascript,map,Javascript,Map,有人能解释一下为什么会产生意想不到的结果: ["1", "2", "3"].map(parseInt); var _parseInt = function(radix, number) { return parseInt(number, radix); } ["1", "2", "3"].map(_parseInt.bind(this, 10)); 哪个返回[1,NaN,NaN],而不是[1,2,3] 我可以通过强制使用单参数函数来实现: ["1", "2", "3"].map(func
["1", "2", "3"].map(parseInt);
var _parseInt = function(radix, number) {
return parseInt(number, radix);
}
["1", "2", "3"].map(_parseInt.bind(this, 10));
哪个返回[1,NaN,NaN],而不是[1,2,3]
我可以通过强制使用单参数函数来实现:
["1", "2", "3"].map(function(s) {return parseInt(s);});
但我不知道第一步到底出了什么问题。本文在最后一个示例中描述了您的问题,与您试图做的完全相同。然而,他们提到的博客文章已经不存在了 以下是一个更好的答案: 因此,如果调用一个实际需要两个参数的函数 第二个参数是元素的索引 在本例中,您最终使用中的基数0、1和2调用了parseInt 转动第一个与不提供参数相同,因此 默认以10为基数。基数1是不可能的数字基数,而基数3是不可能的数字基数 基数2中的数字无效:
本文在最后一个示例中描述了您的问题,与您试图做的完全相同。然而,他们提到的博客文章已经不存在了 以下是一个更好的答案: 因此,如果调用一个实际需要两个参数的函数 第二个参数是元素的索引 在本例中,您最终使用中的基数0、1和2调用了parseInt 转动第一个与不提供参数相同,因此 默认以10为基数。基数1是不可能的数字基数,而基数3是不可能的数字基数 基数2中的数字无效: parseInt接受两个参数,第二个是基数,这就是为什么它不起作用。有关更多信息,请参阅本页底部。引用: parseInt通常与一个参数一起使用,但需要两个参数。第二 Array.prototype.map作为回调函数的基数,传递3 参数:元素、索引、数组。第三个论点是 被parseInt忽略,但不是第二个,因此 混乱 parseInt接受两个参数,第二个是基数,这就是为什么它不起作用。有关更多信息,请参阅本页底部。引用: parseInt通常与一个参数一起使用,但需要两个参数。第二 Array.prototype.map作为回调函数的基数,传递3 参数:元素、索引、数组。第三个论点是 被parseInt忽略,但不是第二个,因此 混乱
正如其他人提到的,问题是由于第二个论点 意见来自: 但是,通过使用,您可以达到预期的效果:
["1", "2", "3"].map(parseInt);
var _parseInt = function(radix, number) {
return parseInt(number, radix);
}
["1", "2", "3"].map(_parseInt.bind(this, 10));
正如其他人提到的,问题是由于第二个论点 意见来自: 但是,通过使用,您可以达到预期的效果:
["1", "2", "3"].map(parseInt);
var _parseInt = function(radix, number) {
return parseInt(number, radix);
}
["1", "2", "3"].map(_parseInt.bind(this, 10));