搜狐CEO张朝阳:不想把成功交给一种可能
2010-08-18 13:49
423 查看
js的parseInt("08")事件
不小心范了一个低级错误,这个问题也是很多初学者容易忽略滴,它就是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"转换为整数
相关文章推荐
- 搜狐CEO张朝阳:今年回归,做一个正常的人
- 搜狐CEO张朝阳决定分拆网游业务单独上市
- 可能是一种通杀的waf bypass方式
- 有一种成功,叫继续努力
- oracle实例坏掉的一种可能
- 张朝阳再造搜狐:从幕后到台前 大刀阔斧改革门户
- 唐骏:骗倒所有人是一种能力 是成功的标志
- “段错误 (核心已转储) ”一种可能原因及其解决方法
- Web系统突然爆”Asp.net ajax客户端框架未能加载“的一种可能原因(误改服务器系统时间)
- [oracle]dbca新建数据库时报错ora-03113时可能的一种原因
- 成功是一种习惯(部分摘录)
- I/O error reading PNG header!错误的一种可能原因
- 异常问题not allowed to send broadcast android.intent.action.BATTERY_CHANGED可能的一种解决方案
- visual studio编写C#代码时“未能从程序集.....中加载类型”和“找不到方法”的一种可能的解决办法
- EVC程序乱码的一种可能
- 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法
- 类中的internal成员可能是一种坏味道
- System Error Code 111 The file name is too long的一种可能的解决方式
- 数据库莫名变慢的一种可能原因和解决办法.
- 有一种毒药叫成功