1.js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。
我是用前者将返回的数据进行过滤的时候,使用parseInt()函数进行过滤。
只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串。parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数字;如果不是,该方法将返回NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的 测试。这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。
实例测试:
1.
var a="3333b";
document.write(parseInt(a)); //3333
2. var a="b3333b";
document.write(parseInt(a)); //NaN
3. var a="33.3";
document.write(parseInt(a)); //33
4. var a="0xA"; 可以自动识别进制的字符串
document.write(parseInt(a)); //10
5. var a="error";
document.write(parseInt(a)); //NaN
parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,需如下调用parseInt()方法:
parseInt("AF", 16); //returns 175
当然,对二进制、八进制,甚至十进制(默认模式),都可以这样调用parseInt()方法:
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。例如:
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
在这段代码中,两行代码都把字符串 "010 "解析成了一个数字。第一行代码把这个字符串看作八进制的值,解析它的方式与第二行代码(声明基数为8)相同。最后一行代码声明基数为10,所以iNum3最后等于10。
对于parseFloat()函数:因为是对字符串中的浮点数据进行处理,那么小说点对它来说就是有效字符了。如果有两个,那么第一个小说点是无效的。
var b='0.b'
document.write(parseFloat(b)); //0
var b='b.3'
document.write(parseFloat(b)); //NaN
2.强制类型转换:
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
Js中的第一种方式,是相对的是部分字符串,因为其解析的时候,只要遇到不是数字的[parseFloat()方法.识别],那么该位往后的都不会进行识别了。
document.write(Number(false)); //0
document.write(Number(true)); //1
var c="3333b";
document.write(Number(c)); //NaN
document.write(Number("5.6.7"));//NaN
最后一种类型转换:
Js中的tostring() ,js中的所有的变量都可以作为一个对象的。
document.write(String(null)); //null
var d=null;
var s=d.toString();
document.write(d.toString());
Uncaught TypeError: Cannot read property 'toString' of null
3.第三种转换:弱语言类型常见的一种变量转换:
Var i=’5’;
Var b=i-1;
那么b会默认的就成了int类型的数据。