跳到主要内容

all

2023年10月07日
柏拉文
越努力,越幸运
2023年02月10日
柏拉文
越努力,越幸运

isNaN()


isNaN() 函数用来确定一个值是否为NaN

语法

const result = isNaN(value)

返回值

如果给定值为 NaN 则返回值为 true;否则为false

场景

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({}); // true

isNaN(true); // false
isNaN(null); // false
isNaN(37); // false

// strings
isNaN("37"); // false: 可以被转换成数值 37
isNaN("37.37"); // false: 可以被转换成数值 37.37
isNaN("37,5"); // true
isNaN('123ABC'); // true: parseInt("123ABC") 的结果是 123,但是 Number("123ABC") 结果是 NaN
isNaN(""); // false: 空字符串被转换成 0
isNaN(" "); // false: 包含空格的字符串被转换成 0

// dates
isNaN(new Date()); // false
isNaN(new Date().toString()); // true

isNaN("blabla") // true: "blabla"不能转换成数值

Polyfill

  • Polyfill一、通过NaN自身永不相等于自身这一特征

    function isNaN(value){
    const num = Number(value);
    return num !== num;
    }
  • Polyfill二、通过Object.is()来判断自身永不相等

    function isNaN(value){
    return Object.is(value,NaN);
    }

    const num = NaN;
    console.log(isNaN(num));

isFinite()


Number.isNaN()


**Number.isNaN()**确定传递的值是否是 NaN。

语法

Number.isNaN(value)
  • value: 要检测是否为 NaN 的值。

返回值

一个布尔值,表示给定的值是否是 NaN。

对比:

  • isNaN()Number.isNaN()的区别: 和全局函数 isNaN() 相比,Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true

    const str = 'NaN';
    const num = NaN;

    console.log(isNaN(str)); // true
    console.log(isNaN(num)); // true

    console.log(Number.isNaN(str)); // false
    console.log(Number.isNaN(num)); // true

Polyfill

Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}

Number.isFinite()


确定传递的值类型及本身是否是有限数。

Number.isInteger()


确定传递的值类型是“number”,且是整数。

Number.isSafeInteger()


确定传递的值是否为安全整数 ( -(2^53 - 1) 至 2^53 - 1)之间。

Number.parseFloat()


和全局对象 parseFloat() 一样。

Number.parseInt()


和全局对象 parseInt() 一样。

number.toString()


toString() 方法返回指定 Number 对象的字符串表示形式

注意

Number 对象覆盖了 Object 对象上的 toString() 方法,它不是继承的 Object.prototype.toString()。对于 Number 对象,toString() 方法以指定的基数返回该对象的字符串表示。

语法

const string = (20).toString([radix])

const number = 20;
const string = number.toString([radix])
  • radix: 指定要用于数字到字符串的转换的基数 (从 236)。如果未指定 radix 参数,则默认值为 10

返回值

返回该对象的字符串表示

number.valueOf()


valueOf() 方法返回一个被 Number 对象包装的原始值。

语法

const num = 100;
console.log(num.valueOf()); // 100
console.log(num.valueOf() === num); // true

返回值

表示指定 Number 对象的原始值的数字