js类型转换

parseInt() 函数更专注于字符串是否包含数值模式
字符串最前面的空格会被
忽略,从第一个非空格字符开始转换。如果第一个字符不是数值字符、加号或减号, parseInt() 立即
返回 NaN 。这意味着空字符串也会返回 NaN (这一点跟 Number() 不一样,它返回 0)

parseFloat() 函数的另一个不同之处在于,它始终忽略字符串开头的零。
这个函数能识别前面讨论的所有浮点格式,以及十进制格式(开头的零始终被忽略)。十六进制数值始终会返回 0。因为
parseFloat() 只解析十进制值,因此不能指定底数。最后,如果字符串表示整数(没有小数点或者小
数点后面只有一个零),则 parseFloat() 返回整数。下面是几个示例:
let num1 = parseFloat("1234blue"); // 1234,按整数解析
let num2 = parseFloat("0xA"); // 0
let num3 = parseFloat("22.5"); // 22.5
let num4 = parseFloat("22.34.5"); // 22.34
let num5 = parseFloat("0908.5"); // 908.5
let num6 = parseFloat("3.125e7"); // 31250000

Number() 函数基于如下规则执行转换。
 布尔值, true 转换为 1, false 转换为 0。
 数值,直接返回。
 null ,返回 0。
 undefined ,返回 NaN 。
 字符串,应用以下规则。
 如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。
因此, Number("1") 返回 1, Number("123") 返回 123, Number("011") 返回 11(忽略前面
的零)。
 如果字符串包含有效的浮点值格式如 "1.1" ,则会转换为相应的浮点值(同样,忽略前面的零)。
 如果字符串包含有效的十六进制格式如 "0xf" ,则会转换为与该十六进制值对应的十进制整
数值。
 如果是空字符串(不包含字符),则返回 0。
 如果字符串包含除上述情况之外的其他字符,则返回 NaN 。
 对象,调用 valueOf() 方法,并按照上述规则转换返回的值。如果转换结果是 NaN ,则调用
toString() 方法,再按照转换字符串的规则转换。
从不同数据类型到数值的转换有时候会比较复杂,看一看 Number() 的转换规则就知道了。下面是
几个具体的例子:
let num1 = Number("Hello world!"); // NaN
let num2 = Number(""); // 0
let num3 = Number("000011"); // 11
let num4 = Number(true); // 1
可以看到,字符串 "Hello world" 转换之后是 NaN ,因为它找不到对应的数值。空字符串转换后
是 0。字符串 000011 转换后是 11,因为前面的零被忽略了。最后, true 转换为 1。

toString() 方法可见于数值、布尔值、对象和字符串值。(没错,字符串值也有 toString() 方法,
该方法只是简单地返回自身的一个副本。) null 和 undefined 值没有 toString() 方法。

posted @   ouhongxiu  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示