|
面试题:
["1", "2", "3"].map(parseInt) 答案是多少? 【分析】 此题,主要是考 map 与 parseInt 方法的参数 思考? 思考? 思考? 01 map 方法 首先,来看看map的语法 ; 如果知道可以跳过 map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。 语法: var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])参数 callback 生成新数组元素的函数,使用三个参数: currentValuecallback 数组中正在处理的当前元素。index可选callback 数组中正在处理的当前元素的索引。array可选map 方法调用的数组。 thisArg可选 执行 callback 函数时值被用作this。 返回值 一个由原数组每个元素执行回调函数的结果组成的新数组。 02 parseInt 方法 再来看看,parseInt的语法; 如果知道可以跳过 parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。 语法 parseInt(string, radix); 参数 string 从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值! 返回值 从给定的字符串中解析出的一个整数。03 面试题分析 回顾题目: ["1", "2", "3"].map(parseInt) 答案是多少? 分析: 1、map方法的第一个参数callback是一个函数 ,parseInt就被当前这个函数 2、map方法中的callback函数的参数,第一个表示数组当前值,第二个表示索引 所以,这返回结果主要就看parseInt方法的返回值了 parseInt('1',0); parseInt('2',1); parseInt('3',2); 这里,就需要了解下parseInt方法的第二个参数了,radix 可选,从 2 到 36 ,表示字符串的基数,即几进制;2就表示2进制,16就表示16进制 根据上面理论,可以得出 parseInt('1',0); //radix为0时,使用默认的10进制,返回1。 parseInt('2',1); // radix值在2-36,无法解析,返回NaN parseInt('3',2); // 基数为2,2进制数表示的数中,最大值小于3,无法解析,返回NaN 3、map方法会返回一个新的数组 故,最终结果为:[1,NaN,NaN] 如果喜欢这篇文章,欢迎添加右下角 "公众号",可以第一时间获到文章推送 |
|
|