Number()
// 布尔值,true 转换为 1,false 转换为 0。
Number(true) // 1
// 数值直接返回
Number(12) //12
Number(0xf) // 15 16进制
Number(-0xf) // -15
// null 返回0
Number(null) // 0
// undefined NaN
Number(undefined)
//字符串 忽略0 有符号算符号,转十进制
Number('123') // 123
Number('000000123') // 123 忽略前面的0
Number('-123') // -123
Number('-00000123') // -123
Number('+00000123') // 123
Number('0.123') // 0.123
Number('000000000.123') // 0.123
Number('') // 0
//注意 转换字符串带负号时不支持 2 、8 、16 进制
Number('0xf') // 15 16进制
Number('-0xf') // NaN
Number('0b1') // 1
Number('-0b1') // NaN
从规则上看Number()函数转换字符串时有点不讲武德,所以在需要整数时优先使用 parseInt()函数
parseInt()
此方法转换规则非常简单,一个开头,一个结尾
从第一个非空格字符开始转换。如果第一个字符不是数值字符**、加号或减号**,parseInt()立即返回 NaN。如果第一个字符是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符
这意味着空字符串也会返回 NaN(这一点跟 Number()不一样,它返回 0)。
parseInt('abc') // NaN
parseInt('123abc') // 123
parseInt('123.5') // 123
arseInt(' -123') // 123
parseInt('-123abc') // -123
//0x 起始 识别为16进制
parseInt('0xf') // 15
parseInt('-0xf') // -15
parseInt(' -0xf') // -15
// 劲酒虽好 , 但还是建议 指定进制,因为 parseInt 支持第二个参数 进制
parseInt('0xf',16) // 15
// 指定16 可以省略0x
parseInt('f',16) // 15
parseInt('11',2) // 3
parseInt(' -11',2) // -3
parseInt(' -11',8) // -9
parseFloat()
此方法规则也很简单和 parseInt 一致,有个特殊情况它始终忽略字符串开头的0,所以它遇到16进制 0x 会始终返回0,也就是说 parseFloat() 只能处理16进制
parseFloat('0.123') // 0.123
parseFloat('.123') // 0.123
parseFloat(' .123') // 0.123
parseFloat(' 0xf') // 0
parseFloat('0123.123') // 123.123
又到了欣赏古诗时间
劝学诗 / 偶成
宋·朱熹
少年易老学难成,一寸光阴不可轻。
未觉池塘春草梦,阶前梧叶已秋声。