美文网首页
['1','2','3'].map(parseInt)结果到底是

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

作者: 阿飞去捉小蝴蝶 | 来源:发表于2019-05-23 12:22 被阅读0次

    当初我第一眼看到这个题目时,自然而然的想到了不就是这样的吗

    最开始的想法

    很简单的题目?然而结果使人大跌眼镜

    正确结果

    这就有点尴尬了,需要好好分析一下,首先看map函数,定义:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

    map() 方法按照原始数组元素顺序依次处理元素。

    map函数

    map函数的第一个参数是一个callback,这个回调函数接受3个参数,currentValue:当前元素的值,index:当前元素的索引,arr:当前元素属于的数组。第二个参数thisValue,是对象作为该执行回调时使用,传递给函数,用作 "this" 的值。

    然后看一下parseInt函数,parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数 (数学系统的基础)。

    parseInt函数

    parseInt函数接收两个参数,string:要被解析的字符串,radix:要解析的数字的基数。该值介于 2 ~ 36 之间。

    1.当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。

    2.当忽略参数 radix , JavaScript 默认数字的基数如下:

    如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。

    如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。

    如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

    结合本题,所以分析,对于每个迭代map, parseInt()传递两个参数: 字符串和基数

    实际上是这样的

    真实情况

    那么,分析一下['10', 1, 2, 3, 123, 123, 234, 345, 456, 567, 678].map(parseInt)结果是什么?

    分析一下

    看一下运行结果

    运行结果

    结果与分析一致。

    相关文章

      网友评论

          本文标题:['1','2','3'].map(parseInt)结果到底是

          本文链接:https://www.haomeiwen.com/subject/pztvzqtx.html