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(); //会引发错误