栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么parseInt用Array#map产生NaN?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么parseInt用Array#map产生NaN?

中的回调函数

Array.map
具有 三个 参数:

在您链接到的同一Mozilla页面上:

回调使用三个参数来调用:元素的值,元素的索引和要遍历的Array对象。”

因此,如果调用

parseInt
实际上需要 两个 参数的函数,则第二个参数将是元素的索引。

在这种情况下,您最终

parseInt
依次调用基数0、1和2。第一个与不提供参数相同,因此默认基于输入(在本例中为10)。以1为底的数字是不可能的,以3为底的数字不是有效数字:

parseInt('1', 0); // OK - gives 1parseInt('2', 1); // FAIL - 1 isn't a legal radixparseInt('3', 2); // FAIL - 3 isn't legal in base 2

因此,在这种情况下,您需要包装函数:

['1','2','3'].map(function(num) { return parseInt(num, 10); });

或使用ES2015 +语法:

['1','2','3'].map(num => parseInt(num, 10));

(在两种情况下,最好如图所示显式提供一个基数

parseInt
,因为否则它会根据输入来猜测基数。在某些较旧的浏览器中,前导0会导致它猜测八进制,这往往是有问题的。它仍然会如果字符串以
0x
。开头,则猜测为十六进制。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号