非数值转换为数值
第一种: Number()
是 转型函数,可用于任何数据类型
使用规则:
如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。
因此,Number("1")返回 1,Number("123")返回 123,Number("011")返回 11(忽略前面 的零)。

1. 如果字符串包含有效的浮点值格式如"1.1",则会转换为相应的浮点值(同样,忽略前面的零)。
2. 如果字符串包含有效的十六进制格式如"0xf",则会转换为与该十六进制值对应的十进制整 数值。
3. 如果是空字符串(不包含字符),则返回 0。 如果字符串包含除上述情况之外的其他字符,则返回 NaN。
例如:

输出:

第二种: parseInt()
主要用于将字符串转换为数值。
字符串最前面的空格会被 忽略,从第一个非空格字符开始转换。
如果第一个字符不是数值字符、加号或减号,parseInt()立即 返回 NaN。
这意味着空字符串也会返回 NaN(这一点跟 Number()不一样,它返回 0)。
如果第一个字符 是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。
比如, "1234blue"会被转换为 1234,因为"blue"会被完全忽略。类似地,"22.5"会被转换为 22,因为小数 点不是有效的整数字符。
let num1 = parseInt("1234blue"); // 1234
let num2 = parseInt(""); // NaN
let num3 = parseInt("0xA"); // 10,解释为十六进制整数
let num4 = parseInt(22.5); // 22
let num5 = parseInt("70"); // 70,解释为十进制值
let num6 = parseInt("0xf"); // 15,解释为十六进制整数
parseInt()也接收第二个参数,用于指定底数(进制数)。
如 果知道要解析的值是十六进制,那么可以传入 16 作为第二个参数,以便正确解析: let num = parseInt("0xAF", 16); // 175
事实上,如果提供了十六进制参数,那么字符串前面的"0x"可以省掉: let num1 = parseInt("AF", 16); // 175
let num2 = parseInt("AF"); // NaN 没有第二个参数告诉它是十六进制 所以NaN
第三种: parseFloat()。
parseFloat()函数的工作方式跟 parseInt()函数类似,都是从位置 0 开始检测每个字符。
同样, 它也是解析到字符串末尾或者解析到一个无效的浮点数值字符为止。
这意味着第一次出现的小数点是有 效的,但第二次出现的小数点就无效了,此时字符串的剩余字符都会被忽略。因此,"22.34.5"将转换 成 22.34。

十六进制数值始终会返回 0。因为 parseFloat()只解析十进制值,因此不能指定底数

浙公网安备 33010602011771号