我把它转过来以便我可以亲眼看到。
1、转换功能:
Node.js 提供了两个转换函数,parseInt() 和 parseFloat()。 前者将值转换为整数,后者将值转换为浮点数。 只有在String类型调用该方法时,这两个函数才能正确运行; 对于其他类型,返回 NaN(非数字)。
parseInt() 和 parseFloat() 在确定字符串是否为数值之前都会仔细解析该字符串。
parseInt()方法首先检查位置0处的字符,判断是否为有效数字; 如果不是,该方法将返回 NaN 并且不会执行进一步的操作。 但如果该字符是有效数字,则此方法将查看位置 1 处的字符并执行相同的测试。 这个过程会一直持续下去,直到找到不是有效数字的字符,此时parseInt()会将字符之前的字符串转换为数字。
例如,如果要将字符串“1234blue”转换为整数,parseInt()将返回1234,因为它在测量字符b时会停止测量过程。
字符串中包含的数字文字会正确转换为数字,因此字符串“0xA”会正确转换为数字 10。
但是,字符串“22.5”将被转换为 22,因为小数点对于整数来说是无效字符。
一些示例如下:
Js代码
1. parseInt("1234blue"); //returns 1234
2. parseInt("0xA"); //returns 10
3. parseInt("22.5"); //returns 22
4. parseInt("blue"); //returns NaN
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseInt()方法还具有基本模式,可以将二进制、八进制、十六进制或任何其他二进制补码字符串转换为整数。
基数由parseInt()方法的第二个参数指定,因此要解析十六进制值,需要调用parseInt()方法,如下所示:
Js代码
1. parseInt("AF", 16); //returns 175
parseInt("AF", 16); //returns 175
当然,对于二进制、八进制甚至十进制(默认模式)javascript 字符串转换数字,您可以像这样调用 parseInt() 方法:
Js代码
1. parseInt("10", 2); //returns 2
2. parseInt("10", 8); //returns 8
3. parseInt("10", 10); //returns 10
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
如果十进制数包含前导 0,最好使用基数 10,这样您就不会意外得到八进制值。 例如:
Js代码
1. parseInt("010"); //returns 8
2. parseInt("010", 8); //returns 8
3. parseInt("010", 10); //returns 10
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
在此代码中,两行代码都将字符串“010”解析为数字。 第一行代码将此字符串视为八进制值,并以与第二行代码(声明基数 8)相同的形式解析它。 最后一行代码声明基数为 10,因此 iNum3 最终等于 10。
parseFloat() 方法与 parseInt() 方法类似。 它从位置 0 开始查找每个字符,直到找到第一个无效字符,然后将该字符之前的字符串转换为数字。
但是,对于此方法,第一个小数点是有效字符。 如果有两个小数点,第二个小数点将被视为无效javascript 字符串转换数字,parseFloat()方法会将这个小数点之前的字符串转换为数字。 这意味着字符串“22.34.5”将被解析为22.34。
使用 parseFloat() 方法的另一个区别是字符串必须以十进制表示法表示浮点数,而不是八进制或十六进制。
此方法忽略前导零,因此八进制数 0908 将被解释为 908。对于十六进制数 0xA,此方法返回 NaN,因为 x 不是浮点数中的有效字符。
另外,parseFloat()没有基本模式。
以下是使用 parseFloat() 方法的示例:
Js代码
1. parseFloat("1234blue"); //returns 1234.0
2. parseFloat("0xA"); //returns NaN
3. parseFloat("22.5"); //returns 22.5
4. parseFloat("22.34.5"); //returns 22.34
5. parseFloat("0908"); //returns 908
6. parseFloat("blue"); //returns NaN
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
2.强制类型转换
您还可以使用类型转换来处理值类型的转换。 使用强制转换来访问特定值,即使它是其他类型。
ECMAScript 中可用的 3 种类型转换如下:
Boolean(value) - 将给定值转换为布尔类型;
Number(value) - 将给定值转换为数字(可以是整数或浮点数);
String(value) - 将给定值转换为字符串。
使用这三个函数之一转换值会创建一个新值,该新值保存从原始值直接转换而来的值。 这可能会导致意想不到的后果。
当要转换的值是至少包含一个字符的字符串、非零数字或对象(在下一节中讨论)时,Boolean() 函数返回 true。 如果值为空字符串、数字0、未定义或null,则返回false。
您可以使用以下代码片段来测试布尔类型强制。
Js代码
1. Boolean(""); //false – empty string
2. Boolean("hi"); //true – non-empty string
3. Boolean(100); //true – non-zero number
4. Boolean(null); //false - null
5. Boolean(0); //false - zero
6. Boolean(new Object()); //true – object
Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object
Number() 的强制转换与 parseInt() 和 parseFloat() 方法类似,只不过它转换整个值而不是部分值。
请记住,parseInt() 和 parseFloat() 方法仅转换第一个无效字符之前的字符串,因此“4.5.6”将转换为“4.5”。
使用 Number() 进行转换,“4.5.6”将返回 NaN,因为整个字符串值无法转换为数字。
如果字符串值可以完全转换,Number() 将确定是否调用 parseInt() 方法或 parseFloat() 方法。
下表说明了对不同值调用 Number() 方法时会发生的情况:
使用结果
Js代码
1. Number(false) 0
2. Number(true) 1
3. Number(undefined) NaN
4. Number(null) 0
5. Number( "5.5 ") 5.5
6. Number( "56 ") 56
7. Number( "5.6.7 ") NaN
8. Number(new Object()) NaN
9. Number(100) 100
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
最后一个强制方法 String() 是最简单的,因为它可以将任何值转换为字符串。
要执行这些转换,只需对作为参数传入的值调用 toString() 方法,该方法将 1 转换为“1”,将 true 转换为“true”,将 false 转换为“false”,依此类推。 。
转换为字符串和调用 toString() 方法之间的唯一区别是转换 null 或未定义的值会生成字符串而不会引发错误:
Js代码
1. var s1 = String(null); //"null"
2. var oNull = null;
3. var s2 = oNull.toString(); //won’t work, causes an error
var s1 = String(null); //"null"
var oNull = null;
var s2 = oNull.toString(); //won’t work, causes an error
3.使用js变量的弱类型转换
举个小反例,一看就明白了。
Js代码
1.
2. var str= '012.345 ';
3. var x = str-0;
4. x = x*1;
5.
var str= '012.345 ';
var x = str-0;
x = x*1;
上面的例子利用了js的弱类型特性,只进行算术运算,实现了字符串到数字的类型转换。 但是,不建议使用此方法。