关于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

二、关于ja乘除法的特例

乘法

如果是 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

猜你喜欢

转载自blog.csdn.net/wdhxs/article/details/114491061