['1','2','3'].map(parseInt)结果到底是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了['1','2','3'].map(parseInt)结果到底是啥?相关的知识,希望对你有一定的参考价值。
参考技术A 当初我第一眼看到这个题目时,自然而然的想到了不就是这样的吗很简单的题目?然而结果使人大跌眼镜
这就有点尴尬了,需要好好分析一下,首先看map函数,定义:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
map函数的第一个参数是一个callback,这个回调函数接受3个参数,currentValue:当前元素的值,index:当前元素的索引,arr:当前元素属于的数组。第二个参数thisValue,是对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
然后看一下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) 结果是什么?
看一下运行结果
结果与分析一致。
Android Support Annotations :安卓注解快速上手
我们都知道,安卓资源文件都是int类型的ID来保存其引用,通过注解类型,可以让我们在写代码的时候,及时发现参数类型的错误,避免潜在的BUG,如下:
我们通过@LayoutRes指定了参数必须要是R.layout.xxx格式的数据,传数字IDE就会提示我们错误
通过gradle,把注解类型引入到项目中
compile ‘com.android.support:support-annotations:23.1.1‘
安卓原生给我们提供了一系列注解类,支持我们的开发
注解类所在包位置:安卓SDK路径extrasandroidm2repositorycomandroidsupportsupport-annotations
我们随便找个23.1.1文件夹,找到里面的support-annotations-23.1.1-sources.jar,通过JD-GUI查看
通过里面Res结尾的类,我们就可以限定安卓不同类型的资源ID了
里面其他类我们也可以看看,比如NonNull、Nullable、限定范围FloatRange的也很有意思,如下:
以上是关于['1','2','3'].map(parseInt)结果到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章
ajax返回一个Map类型数据'a':'1','b':'2','c':'3'怎么取值?
['1','2','3'].map(parseInt) 返回的是什么?
php 获取PHP的相对时间(例如'1小时前','昨天','明天','2周')。使用参数$ max_diff,您可以指定数字