「前端」[1, 2, 3].map(parseInt) 解析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_26377547/article/details/100929447

这题比较基础,主要考察的是map()方法和parseInt()方法的了解。

parseInt

parseInt()方法解析一个字符串参数,返回一个指定基数的整数。

const intValue = parseInt(string, radix);
//  由此可见Number.parseInt()与全局环境下parseInt()是同一个方法
Number.parseInt() === parseInt();	//  true

我们可以看到parseInt()方法有两个参数:

  • string:需要解析的值。如果string不是一个字符串,那么会将其转化为字符串。
  • radix:一个介于2和26之间的整数,表示string参数的基数。默认为10
  • 返回值:返回一个整数或者NaN
parseInt(100);		//  100
parseInt(100, 10);	//  100
parseInt(100, 4);	//  4

注意:在radixundefined,或者radix0或者没有指定的情况下,JavaScript作如下处理:

  • 如果字符串string0x或者0X开头,则基数为16(16进制)。
  • 如果字符串string0开头,基数为8(8进制)或者10(10进制),具体是哪个基数有具体环境决定。
  • 如果字符串string以其他任何值开头,则基数为10(10进制)。

map

map()方法创建一个新数组,其结果是该数组中每个元素都调用一个提供的函数后返回的结果。

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
	// Return element for new_array 
}[, thisArg])

可见,回调函数callback需要三个参数:

  • currentValue:表示当前正在处理的元素。
  • index:可选。表示当前正在处理的元素在数组中的下标。
  • array:可选。表示当前被处理的数组。

回到原题

让我们回到原题上:

[1, 2, 3].map(parseInt);

对于这个数组,每一次迭代,parseInt接收两个参数,字符串和基数,因此上面这段代码实际上是这样的:

[1, 2, 3].map((item, index) => {
	return parseInt(item, index);
});

所以返回值就是:

parseInt(1, 0);	//  1
parseInt(2, 1);	//  NaN
parseInt(3, 2);	//  NaN

因此原数组就变成了:

[1, NaN, NaN]

猜你喜欢

转载自blog.csdn.net/qq_26377547/article/details/100929447
今日推荐