当前位置: 首页 > Web前端 > JavaScript

Web前端老烂问题:['1','2','3'].map(parseInt)结果是什么?

时间:2023-03-27 14:41:20 JavaScript

大家好,我是西瓜前端哥。这篇文章讲的是一道比较经典的前端面试题。本文将深入剖析这道题,深挖知识点,让你全面掌握这道题的解法。这是web前端的一道老烂题,不好不坏,不过我只想说,每年高考也是有的。此问题衡量对JavaScript方法的熟悉程度。不直接给出答案,先看思路。Array.prototype.map首先是Array.prototype.map方法,是Array实例的一个方法。给map传递一个回调函数,map会遍历数组元素,将相关信息一起传入回调函数,并将回调函数的返回值作为新数组对应索引的元素,返回新数组.回调函数每次可以获得当前迭代(1)数组元素(2)索引值(3)和数组本身。[1,2,3].map((value,index,array)=>{returnvalue*2;})//return[2,4,6]如果你是初学者,你可能知道底层这个黑盒子我对如何实现有些疑惑,所以我就实现Array.prototype.map方法,让读者加深理解。Array.prototype.myMap=function(callbackfn){constarr=this;constretArr=newArray(arr.length);for(leti=0;i2.(1*2+0*1)parseInt('0xa');//=>10.视为十六进制,相当于parseInt('a',16)parseInt('123');//=>123.视为十进制,最常见的用法,理论上基数应该是一个数字大于等于2小于等于36,否则视为非法,返回NaN。除了一个值为0,当parseInt的第二个参数radix为0时,parseInt会被当作第二个参数而不传,所以字符串会被当作十进制来处理。当字符串中的第一个非空格字符无法转换为数字时,也返回NaN。回到这个话题['1','2','3']。map(parseInt)的parseInt作为回调函数获取map提供的三个参数。感谢JavaScript是一种非常方便的弱类型语言,所以传递的参数数量不匹配,不会报错,只会丢弃没有使用的参数,缺少的参数会被设置为undefined。这里parseInt只使用了两个参数,即数组元素和索引值。即:parseInt('1',0);//1个特例,等价于parseInt('1')parseInt('2',1);//NaN没有一元parseInt('3',2);//NaN没有找到合法的字符,3虽然是一个数字,但是不能用二进制来表示,只能是0和1,所以返回的结果是:[1,NaN,NaN]。