['1','2','3'].map(parseInt)会等于什么呢?

24 阅读2分钟

一、前言

相信各位前端对这道经典面试题熟悉不过了,主要考察两个基本知识点:1、map函数。2、parseInt函数。

map函数主要用来遍历数组,接受一个回调函数,回调函数中有三个参数:元素、索引、数组。它返回一个新数组,每个元素都是回调函数的返回值。详情请前往mdn文档:

developer.mozilla.org/zh-CN/docs/…

parseInt函数主要用来对非数字类型的值转换成整数类型,它接受两个参数,第一个参数接收一个字符串,第二个参数表示进制的基数。它的规则如下:

  • 如果第一个参数不是字符串,先调用toString方法转换为字符串,然后再转换为数字,如果不能转换为数字或者第二个参数小于2或大于36,返回NaN。
  • 如果能被转换为数字并且第二个参数是0或者undefined,看传入的第一个字符串是否以'0x'开头,就以十六进制转换,如果以'0'开头,则以八进制转换,否则默认以十进制转换。

以上就是parseInt的转换规则,需了解更加详细,自行前往mdn官网文档:

developer.mozilla.org/zh-CN/docs/…

二、理解

上面介绍了两个函数的用法和规则,掌握了这两个知识点,就可以很简单的解决问题了。

这道题的意思就是用map遍历这个数组,将里面的每一项通过parseInt去转换,得到的结果是什么?

当再map的回调函数中使用parseInt函数时,map方法会传递3个参数,但是parseInt函数会忽略第三个参数,不会忽略第二个参数。

// parseInt(string, radix) -> map(parseInt(value, index))
/* 第一次迭代 (index 是 0): */ parseInt("1", 0); // 1
/* 第二次迭代 (index 是 1): */ parseInt("2", 1); // NaN
/* 第三次迭代 (index 是 2): */ parseInt("3", 2); // NaN

以上就是这道题的解析,有疑问的朋友欢迎评论区留言!

欢迎关祝工粽hao---代码分享站,这里有许多的干货和资源哦!