• Js笔试题之parseInt()和.map()


    parseInt()的几个例子

    var b = parseInt("01");
    alert("b="+b);
    var c = parseInt("09/08/2009");
    alert("c="+c);
    

    结果:b=1,c=0

    parseInt()用来解析字符串,返回整数,有几个特点:

    1.无视被解析字符串最前和最后的空格,即:" 111 "和"111"是一样的

    2.正规格式是parseInt(string,radix)。

    第一个参数是被解析的字符串,第二个参数是进制(可不些)

    第二个参数的特点:

    ①如果radix省略或为0,则按默认进制(十进制)进行解析

    ②radix为2~36之间的整数,如果在这个范围之外,返回NaN

    ③string的首字符为0,则默认解析为8进制。string首字符为0x(0X)则默认解析为16进制。其他情况默认为10进制。

    ④最好加上第二个参数,不然即使碰到首字符为0,应该以8进制方式进行,在某些浏览器下,如ff也会按10进制进行

    3.解析从第一个可以解析的字符开始,到第一个不能解析的字符(如空格,标点符号等)结束。后面的字符不再解析。如果第一个字符就不可以解析,则返回NaN。

    回到此题来分析

    b的首字母是0,按8进制解析后面的数值,也就是8进制的1。自然返回值为1。
    c的首字母是0,按8进制解析后面的数值,但是第二个字符9已经不是8进制数,也就是9是第一个不能解析的字符,parseInt("09/08/2009")相当于parseInt("0"),自然返回值是0
    注:8也不是8进制数,最大到7

    变形:

    var c = parseInt("0119/08/2009");
    alert("c="+c);
    

    分析:

    相当于parseInt("011"),0*8^2+1*8^1+1*8^0=0+8+1=9,输出结果为c=9
    

    parseFloat()和parseInt()

    parseInt()可以带参数,指定二进制、八进制或者十六进制(默认十进制),而parseFloat()不带参数,不能解析八进制、十六进制数,就只能按十进制进行。

    再来看parseInt()和.map()结合的例子

    ["1", "2", "3"].map(parseInt) 返回值又是多少呢
    

    map方法

    array1.map(callbackfn[, thisArg])

    对数组的每个元素,调用定义的回调函数,返回一个数组包含结果

    参数:

    array1:必须。一个数组对象

    callbackfn:必须。最多接受三个参数(数组元素的值,数组元素的索引,包含该元素的数组对象)的回调函数

    thisArg:可选。

    即原例子相当于

    [parseInt("1",0),parseInt("2",1),parseInt("3",2)]
    

     分析:

    1按十进制转换输出1
    1不在2~36之间,输出NaN
    字符串”3“里面没有合法的二进制数,输出NaN
    所以最后结果是[1,NaN,NaN]
    
  • 相关阅读:
    ORACLE锁表问题
    迅雷极速版解决版本太旧提示问题
    迅雷极速版任务出错的解决办法(亲测可用)
    百度文库免积分免费下载工具的原理与实现
    C#启动另一个应用程序并传参数
    C#设置WebBrowser IE浏览器版本
    JS强制刷新页面、清除缓存刷新
    JS播放声音
    Chrome插件(扩展)开发全攻略
    IIS7.5全站301跳转,内页+带参数url,这才是真正的全站跳转
  • 原文地址:https://www.cnblogs.com/zhangwenkan/p/4180322.html
Copyright © 2020-2023  润新知