一、typeof、instanceof、Number.isInteger
- typeof
typeof
判斷值是不是基本類型number
:
const num = 1;
typeof num === 'number'; // true
- instanceof
instanceof
判斷值是不是包裝類Number
:
const num = new Number(1);
num instanceof Number; // true
- Number.isInteger
Number.isInteger
判斷值是否是整數(shù)
:
Number.isInteger(1); // true
Number.isInteger('1'); // false
Number.isInteger(1.1); // false
這幾種方式的缺點(diǎn),都是只能基于類型判斷,無法判斷字符串是否是數(shù)值。文章來源:http://www.zghlxwxcb.cn/news/detail-591604.html
二、parseInt、parseFloat
parseInt
和parseFloat
解析的時(shí)候遇到非法字符結(jié)束,返回解析到的數(shù)值
。也就是說只要字符串頭部
是合法數(shù)值
,那么就能解析出數(shù)值,哪怕整體不是數(shù)值。比如123abc
,會(huì)被解析程123
。文章來源地址http://www.zghlxwxcb.cn/news/detail-591604.html
const a = '123abc';
parseFloat(a); // 123
const b = 'a123abc';
parseFloat(b); // NaN
const c = '0123abc';
parseFloat(c); // 123
const d = 'a0123abc';
parseFloat(d); // NaN
三、isNaN、isFinite
-
NaN
,它表示Not-a-Number
。兩個(gè)NaN無法直接比較相等,因?yàn)槲覀冎恢浪皇菙?shù)值,是啥不確定,也就無法比較相等。 -
isNaN(value)
,如果Number(value)
的結(jié)果為NaN
返回true
,否則返回false
。 -
isFinite(value)
,如果Number(value)
的結(jié)果為數(shù)值
,且不等于Infinity
或-Infinity
返回true
,否則返回false
。
Number(true); // 1
Number(false); // 0
Number(null); // 0
Number(undefined); // NaN
Number(''); // 0
Number('123'); // 123
Number(123); // 123
Number('abc'); // NaN
isNaN(true); // false
isNaN(false); // false
isNaN(null); // false
isNaN(undefined); // true
isNaN(''); // false
isNaN('123'); // false
isNaN(123); // false
isNaN('abc'); // true
isFinite(true); // true
isFinite(false); // true
isFinite(null); // true
isFinite(undefined); // false
isFinite(''); // true
isFinite('123'); // true
isFinite(123); // true
isFinite('abc'); // false
四、Number.isNaN、Number.isFinite
-
Number.isNaN(value)
,如果value
為NaN
返回true
,否則返回false
。 -
Number.isFinite(value)
,如果value
為數(shù)值,且不等于Infinity
或-Infinity
返回true
,否則返回false
。 - 和全局函數(shù)
isNaN()
相比,Number.isNaN()
不會(huì)自行將參數(shù)轉(zhuǎn)換成數(shù)字,只有在參數(shù)是值為NaN
的數(shù)字時(shí),才會(huì)返回true
。
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0) // true
Number.isNaN(true); // false
Number.isNaN(false); // false
Number.isNaN(null); // false
Number.isNaN(undefined); // false
Number.isNaN(''); // false
Number.isNaN('123'); // false
Number.isNaN(123); // false
Number.isNaN('abc'); // false
Number.isFinite(true); // false
Number.isFinite(false); // false
Number.isFinite(null); // false
Number.isFinite(undefined); // false
Number.isFinite(''); // false
Number.isFinite('123'); // false
Number.isFinite(123); // true
Number.isFinite('abc'); // false
-
Number.isNaN
等價(jià)于:
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
-
Number.isFinite
等價(jià)于:
if (Number.isFinite === undefined) Number.isFinite = function(value) {
return typeof value === 'number' && isFinite(value);
}
五、正則表達(dá)式
const exp = /^[0-9]+.?[0-9]*/;
exp.test('123'); // true
exp.test('a123'); // false
exp.test(123); // true
參考
- JavaScript 判斷是否為數(shù)字的幾種方式
到了這里,關(guān)于js判斷是否為數(shù)字的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!