Number和parseInt区别

161 阅读1分钟

一 Number()转换规则

  • true转化为1,false转化为0
  • 数值的话直接返回
  • null 返回0
  • undefined 返回NaN 如果是字符串的话应用一下规则
  • 字符串只包含数值字符和'+','-'号,则转换为十进制数值
  • 字符串包含浮点值,则转化为相应的浮点值
  • 字符串包含有效16进制格式,则转换为相应十进制数值
  • 空字符串返回0
  • 其他情况返回NaN 如果是对象的话调用valueOf方法,按照以上规则进行转换返回的值,如果转换结果是NaN,则调用toString()方法,再按照转换字符串的规则转换.
Number(true)     	1
Number(false)    	0
Number(123)  		123
Number("123")		123
Number(null) 		0
Number(undefined)	NaN
Number("")		0
Number("+123")		123
Number("-123")		-123
Number("0xff")		255
Number("-0xff")		NaN
Number([])   		0

转换对象的时候会隐式调用valueOf方法,重写valueOf方法使其返回字符串
let a = {
  name: "sun",
    valueOf() {
 	  return "2313"   
   }
 }
Number(a)   		2313

parseInt可以用来得到整数,它可以从字符串中取得整数 它从一个非空格的字符开始转换,如果第一个不是数值字符或者不是'+','-'号,就直接返回NaN,如果是第一个字符是数值字符或者'+','-'号,就继续向下进行转换,直到找到不是数值字符的字符.

parseInt("123sun")     123
parseInt("0xff")	   255
parseInt("-0xff")      -255

parseInt可以用来截取数字和字符串相邻的字符串,得到前面的数值.