一、Number()
1.如果是传进去数字值,只进行传入和传出,前置为 0x 的数字 和 前置 为0且不包含数字8,9的数字 ,会被转为十进制,对于其他的数字来说通常没有变化。
2.如果传进去Boolean,true和false会被转成1和0。
3.传进去null或者undefined,会被转成0和NaN
4.对于传进去字符串:
a.如果字符串只包含数字,忽略前置的0,将其转换为 十进制 。
b.带小数点的字符串,忽略前置的0,将其转换为对相应的 浮点数。
c.十六进制的话,也会将其转换为十进制。如0xfff 会被转成4095.
d.字符串如果是空的,或者只含有空格的字符串,会被转成0.
e.如果字符串中含有非数字的字符,转成NaN。如 “10*10”算式也会转成NaN
5.传进去的函数,数组,集合等对象,会先按照之前的规则转换返回值,如果是NaN,则再调用对象的toString,然后在依照前面的规则转换返回的字符串。
1 //整数字符串或者带小数点字符串 2 document.write(Number("8944") + "<br>"); //8944 3 document.write(Number("89.44") + "<br>");//89.44 4 document.write(Number("10*10") + "<br>");//NaN 5 document.write(Number(0666) + "<br>");//NaN 6 //带字符的数字 7 document.write(Number("8944hh") + "<br>");//NaN 8 document.write(Number("hh8947") + "<br>");//NaN 9 //为空或者undefined 10 document.write(Number() + "<br>");//0 11 document.write(Number(undefined) + "<br>");//NaN 12 //前置0x 13 document.write(Number("0xfff") + "<br>");//4095 14 document.write(Number("06666") + "<br>");//6666 15 //前置一个或多个0 16 document.write(Number("08944") + "<br>");//8944 17 document.write(Number("00010101") + "<br>");//默认转成十进制 18 //布尔值 19 document.write(Number(true) + "<br>"); 20 document.write(Number(false) + "<br>"); 21 //对象或者函数 22 function num(){return '123456'}; 23 document.write(Number(function(){}) + "<br>");//NaN 24 document.write(Number(num()) + "<br>");//123456 25 document.write(Number([1,2,3,4]) + "<br>");//NaN 26 document.write(Number({a:1,b:2,c:3}) + "<br>");//NaN
二、parseInt()
1.parseInt(numstring, [radix])函数用于把字符串转换为整数。参数radix可选,如果设置2-36之间的整数,则表示numstring的进制,转成对应的十进制数字。但是numstring的是否符合设定的进制规则,需要注意。
2.如果没有设置radix参数,则前置0x,0的数字会被当成十六进制和八进制。
3.parseInt 是可以解析字符串中带字符的数字的,默认 parseInt() 方法会从字符串的首字符开始分析,如果是有效数字,就继续分析下一个位置的数字,知道发现非有效数字为止(字母、小数点、其他符号等)。
4.parseInt 在转换浮点数的时候不是进行四舍五入,而是直接取小数点前面的整数。
5.parseInt 对数值表达式的转化,是先计算整数值。
6.对布尔值、空值、undefined等,parseInt返回值都是NaN。
7.传进去一个数组的时候,会返回数组中第一个的值,如果是NaN,然后在以字符串的形式进行转换。
1 //整数字符串或者带小数点字符串 2 document.write(parseInt("8944") + "<br>"); //8944 3 document.write(parseInt("89.44") + "<br>");//89 4 document.write(parseInt("10*10") + "<br>");//10 5 document.write(parseInt(0666) + "<br>");//438 6 //带字符的数字 7 document.write(parseInt("8944hh") + "<br>");//8944 8 document.write(parseInt("hh8947") + "<br>");//NaN 9 //为空或者undefined、布尔值 10 document.write(parseInt(true) + "<br>"); 11 document.write(parseInt(false) + "<br>"); 12 document.write(parseInt() + "<br>");//NaN 13 document.write(parseInt(undefined) + "<br>");//NaN 14 //对象或者函数 15 function num(){return '123456'}; 16 document.write(parseInt(function(){}) + "<br>");//NaN 17 document.write(parseInt(num()) + "<br>");//123456 18 document.write(parseInt(["11h",2,3,4]) + "<br>");//1 19 document.write(parseInt({a:1,b:2,c:3}) + "<br>");//NaN
三、parseFloat
1.parseFloat(numstring)和parseInt类型,只是转成浮点数。
2.需要注意的是,在进行转换的的时候,只会解析遇到的第一个有效的小数点,后边遇到的小数点和字符会被当成无效字符,停止解析
3.在进行字符串解析的时候,parseFloat始终会忽略前置的0,如 "0xfff", 会被解析成0。
1 document.write(parseFloat("8944") + "<br>"); //8944 2 document.write(parseFloat("89.44") + "<br>");//89.44 3 document.write(parseFloat("89.44.44") + "<br>");//89.44 4 document.write(parseFloat(0666) + "<br>");//438 5 document.write(parseFloat(0x10) + "<br>");//16 6 document.write(parseFloat("0xfff") + "<br>");//0
Number() | parseInt() | parseFloat |
Number(false),结果为0 | parseInt(false),结果为NaN | parseFloat(false),结果为NaN |
Number(true),结果为1 | parseInt(true),结果为NaN | parseFloat(true),结果为NaN |
Number(null),结果为0 | parseInt(null),结果为NaN | parseFloat(null),结果为NaN |
Number("1.1.1"),结果为NaN | parseInt("1.1.1"),结果为NaN | parseFloat("1.1.1"),结果为NaN |
Number("123HELLO"),结果为NaN | parseInt("123HELLO"),结果为123 | parseFloat("123HELLO"),结果为123 |