当前位置: 代码迷 >> JavaScript >> js 高级学习札记 ( 六 ) 类型转换
  详细解决方案

js 高级学习札记 ( 六 ) 类型转换

热度:80   发布时间:2012-11-22 00:16:41.0
js 高级学习笔记 ( 六 ) 类型转换

1, ECMAScript 中的类型转换时简单的, 也有全局方法用来处理稍微复杂一点的转换 . ?

?

2, ?boolean , 数字 ?字符串 都是伪对象 ? 都有toString()方法.?

?

? ? ?默认的toString()方法返回的数值都是10进制的.?

? ? ?要想返回

?

var iNum = 10;
alert(iNum.toString(2));	//输出 "1010"
alert(iNum.toString(8));	//输出 "12"
alert(iNum.toString(16));	//输出 "A"        10 -->A
?

3, ?parseInt() 方法?

?

? ? parseInt() 将查看位置0处的字符 , 如果不是数字 就返回NaN ,如果是数字就继续下一个判断, 直到不是数字为止, 也就是说即使 后面有 不是数字的字符 只要第一个是数字 ,他还是会把前面数字的部分返回, 就像 第一个例子那样 ...

?

var iNum1 = parseInt("12345red");	//返回 12345
var iNum1 = parseInt("0xA");	//返回 10
var iNum1 = parseInt("56.9");	//返回 56
var iNum1 = parseInt("red");	//返回 NaN

?

? ?对 二进制, 八进制, 十六进制 也有相应的parseInt() ;

?

var iNum1 = parseInt("AF", 16);	 //返回 175
var iNum1 = parseInt("10", 2);	        //返回 2
var iNum2 = parseInt("10", 8);	       //返回 8
var iNum3 = parseInt("10", 10);     //返回 10

?

? ?如果数字前面有 0 , 的话 就会当成八进制数处理 ,?

?

var iNum1 = parseInt("010");	//返回 8
var iNum2 = parseInt("010", 8);	//返回 8
var iNum3 = parseInt("010", 10);	//返回 10

?

?

4, ?parseFloat()

?

? ?只能是十进制的数字 , 而且第二个小数点后面的内容会被忽略?

var fNum1 = parseFloat("12345red");	//返回 12345
var fNum2 = parseFloat("0xA");	        //返回 NaN
var fNum3 = parseFloat("11.2");	        //返回 11.2
var fNum4 = parseFloat("11.22.33");        //返回 11.22
var fNum5 = parseFloat("0102");	       //返回 102
var fNum1 = parseFloat("red");	               //返回 NaN
?

5, ?强制类型转换?

?

?

? ? ? 有三种方法 Boolean() , Number(), String() ;

?

6, ?Boolean() 方法?

?

var bValue = Boolean("");            // false
var  bValue = Boolean(null);     //  false
var  bvalue = Boolean(0);            //  false
-----
var  bValue2 = Boolean("hi")       //true 
var  bValue2 = Boolean(20)         //true
var  bValue2 = Boolean(new Object())    //true
  

?

? ?当空字符串, null/undefined, 数字0 时返回false ;

? ?其他情况为true?

?

?

7, Number() ?函数

?

用法 结果
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number("1.2") 1.2
Number("12") 12
Number("1.2.3") NaN
Number(new object()) NaN
Number(50) 50

?

-- ?

? ?和parseInt() , parseFloat() 不同的是, 可以把 false ,true 转化成0 和1?

? ?1.3.4 ?这样不是数字的 会变成NaN 而不是 截取第二个点号之前的值

?

8, ?String() 方法?

?

? ? 转换成字符串只要调用toString()方法就可以了 ?

? ? 和String() 的唯一区别就是 不能吧null /undefined 成功转化 , 而会发生错误.?

?

var s1 = String(null);	//"null"
var oNull = null;
var s2 = oNull.toString();	//会引发错误
?

?

?

?

  相关解决方案