zoukankan      html  css  js  c++  java
  • JavaScript 问题解决 -- parseInt("08")或parseInt("09")转换返回0的解决方法

     

    不小心范了一个低级错误,这个问题也是很多初学者容易忽略滴,它就是js中的整数转换函数parseInt(string, radix)。 

    使用parseInt转换"01" - "07"时,返回的结果和预期的一样,相应得到1 - 7,如果是parseInt("08")、parseInt("09")...,

    那么得到的数值将不是8、9...,大家可以试试。 

    不清楚parseInt使用方法的兄弟就会觉得很奇怪:为什么反回的值这么怪异? 

    其实不是parseInt怪异,而是我们在使用过程忽略了它的第二个参数。 

    parseInt(string, radix)的作用是将string转换为整数,第二个参数是设置string的格式,常用的有2、8、10、16,表示string是多少进制的数。 

    radix 可取值的范围是2~36,如果不在这个范围内,将返回NaN。 


    如果设置radix的值是0或者不设置时,会自动识别string的格式: 

    以 "0x" 开头,parseInt() 会把 string 除0x外的其余部分当作十六进制数, 
    以 "0" 开头,parseInt() 会把 string 除0外的字符当作八进制或十六进制数, 
    以 1 ~ 9 的数字开头,parseInt() 将把它当作十进制数。 

    看到这里,应该明白为什么parseInt("08")返回的不是8了吧,因为把它当八进制了,而八进制是没有8的,所 

    以要想得到8,那就parseInt("08",10)。 


    总之,为了避免parseInt("08")得到0这样而不是8的问题存在,在任何使用parseInt的地方都明确指定要转换的格式,

    即使parseInt("5"),也要写成parseInt("5",10),养成一个好的惯, 

    一看就知道 
    parseInt("11",10) 是要将十进制的"11"转换为整数, 

    parseInt("11",2) 是要将二进制的"11"转换为整数。

  • 相关阅读:
    关于订阅号和自定义菜单的关系问题
    微信公众账号支付商户接入指南
    关于微博认证和微信认证
    ACCESS TOKEN
    微信支付可能改变的六大行业
    易信公众平台的微创新:活动消息
    微信公众平台开发(62)股票行情及分析
    七牛云存储官方接口PHP版本
    ckeditor实现WORD粘贴图片自动上传,jsp应用
    CKeditor粘贴图片在IE下自动上传的研究
  • 原文地址:https://www.cnblogs.com/Herzog3/p/6909165.html
Copyright © 2011-2022 走看看