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
: 指定要用于数字到字符串的转换的基数 (从2
到36
)。如果未指定radix
参数,则默认值为10
。
返回值
返回该对象的字符串表示
number.valueOf()
valueOf()
方法返回一个被 Number
对象包装的原始值。
语法
const num = 100;
console.log(num.valueOf()); // 100
console.log(num.valueOf() === num); // true
返回值
表示指定 Number
对象的原始值的数字