关于JS数值转换的问题

关于JS数值转换的问题

一、Number和parseInt

Number

Number()parseInt()都可以将对象转换为数值,但转换方式有些许不同。

Number()转化中值得注意的是:

Number(undefined) === NaN

而null会被转化为0

Number(null) === 0
Number("1234blue") === NaN

parseInt

parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回 NaN;也就是说,用 parseInt()转换空字符串会返回 NaN(Number()对空字符返回 0)。如
果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。例如,"1234blue"会被转换为 1234,因为"blue"会被完全忽略。类似地,"22.5"会被转换为 22,因为小数点并不是有效的数字字符。

var num2 = parseInt(""); // NaN 
parseInt("1234blue") === 1234
parseInt(null) === NaN

二、关于js乘除法的特例

乘法

如果是 Infinity 与 0 相乘,则结果是 NaN

Infinity * 0 // => NaN

除法

如果是 Infinity 被 Infinity 除,则结果是 NaN;

console.log(Infinity / Infinity); // NaN

0 / 0 = NaN

console.log(0 / 0); // NaN

加法

如果是 Infinity 加 Infinity,则结果是 Infinity;

console.log(Infinity + Infinity); // Infinity

减法

如果是 Infinity 减 Infinity,则结果是 NaN;

console.log(Infinity - Infinity); // NaN

相等操作符

主要注意关于对象的比较,会首先调用valueOf函数,没有的话调用toString函数

[] == !([]) // 左边是对象,调用valueOf() => []空对象 => Number => 0
Number({}) => NaN
Number([]) => 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值