['1','2','3'].map(parseInt) 结果

面试题,结果为 [ 1, NaN, NaN ]



map

Array.prototype.map( callbackFn )

callbackFn 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。

所以 ['1','2','3'].map(parseInt) 就是将数字1,2,3作为元素;0,1,2作为下标分别调用 parseInt 函数。即分别求出 parseInt('1',0), parseInt('2',1), parseInt('3',2)的结果。



parseInt

语法

parseInt(string, radix);

参数

string

要被解析的值。如果参数不是一个字符串,则将其转换为字符串 (使用 ToString抽象操作)。字符串开头的空白符将会被忽略。

radix_ 可选_

236 的整数,表示进制的基数。例如指定 16 表示被解析值是十六进制数。如果超出这个范围,将返回 NaN。假如指定 0 或未指定,基数将会根据字符串的值进行推算。注意,推算的结果不会永远是默认值 10!文章后面的描述解释了当参数 radix 不传时该函数的具体行为。

返回值

从给定的字符串中解析出的一个整数。

或者 NaN,当

  • radix 小于 2 或大于 36,或

  • 第一个非空格字符不能转换为数字。

parseInt('123', 5) // 将'123'看作 5 进制数,返回十进制数 38 => 1*5^2 + 2*5^1 + 3*5^0 = 38



结果分析

['1','2','3'].map(parseInt)即

parseInt('1',0);radix 为 0,parseInt() 会根据十进制来解析,所以结果为 1;

parseInt('2',1);radix 为 1,超出区间范围,所以结果为 NaN;

parseInt('3',2);radix 为 2,用2进制来解析,应以 0 和 1 开头,所以结果为 NaN。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。