javascript高级程序设计(第三版)-第三章 数据类型-学习笔记

我们平时用的最多的可能就是parseInt方法了,但是可能只会一些基础的用法,其实我之前也是只会一些基础的用法,今天看到了对parseInt方法的详细介绍,所以记录下来,以备后用。

一下是一些parseInt的方法示例:

var num1=parseInt("hello world"); //NaN
var num2=parseInt("");//NaN
var num3=parseInt("1234Hello"); //1234
var num4=parseInt("hello1234");
var num5=parseInt("0xA");; //10    16进制处理
var num6=parseInt("22.7"); //22
var num7=parseInt("070"); //56 或是70 八进制处理
var num8=parseInt("70");// 70
var num9=parseInt("0000101");//65 或是101  八进制处理

在使用parseInt处理8进制的字符串的时候,ECMAScript 3和5 是存在分歧的。

ECMAScript3 认为是56(八进制),ECMAScript5 认为是101(10进制)


var num9=parseInt("070");
在ECMAScript 3 javascript引擎中,"070"被当作八进制字面量,因此转换后的值是十进制的56

在ECMAScript 5 javascript引擎中,parseInt()已经不再具备解析八进制值的能力了,因此前导的零会被认为无效,从而将这个值当成70,结果就得到了十进制的70

我在使用Firefox18版和chrome浏览器分别测试的时候就发现确实有这个问题。

那么我们该怎么办呢,为了消除上面的问题,我们可以为这个函数提供第二个参数:转换时使用的基数,例如:

var num=parseInt("0xAF",16);//175 
var num1=parseInt("AF",16);; //175 按照16进制解析
var num2=parseInt("AF"); //NaN
var num3=parseInt("10",2);//2 按照2进制解析
var num4=parseInt("10",8);//8 按照8进制解析
var num5=parseInt("10",10);//10 按照10进制解析
var num6=parseInt("10",16); //16 按照16进制解析
所以,为了避免出现上面的错误,我们最好都明确指定好基数,是非常有必要的。

暂时就先些这么多吧,呵呵,以后再补上,呵呵

你可能感兴趣的:(javascript高级程序设计(第三版)-第三章 数据类型-学习笔记)