Baseline Widely available
isNaN()
å½å¼æå¤æ·æåæ¸å¼æ¯ä¸æ¯ NaN
ãæ³¨æï¼å¨ isNaN
å½å¼è£¡é¢ï¼æåæè¶£çå¼·å¶æ§è¦åãä½ å¯è½ææ³æ¹ç¨å¨ ECMAScript 2015 å°å
¥ç Number.isNaN()
ã
function milliseconds(x) {
if (isNaN(x)) {
return "Not a Number!";
}
return x * 1000;
}
console.log(milliseconds("100F"));
// Expected output: "Not a Number!"
console.log(milliseconds("0.0314E+2"));
// Expected output: 3140
èªæ³ 忏
value
è¦æ¸¬è©¦çæ¸å¼ã
å¦æçµ¦å®å¼æ¯ NaN
å°±åå³ true
ãå¦åå°±åå³ false
ã
isNaN
å½å¼
èå
¶ä» JavaScript çå¼ä¸åï¼ä½ ä¸å¯è½é çèéç®ç¬¦ï¼== è ===ï¼ä¾å¤æ·æå弿¯ä¸æ¯ NaN
ï¼å çºé£ NaN == NaN
è NaN === NaN
ççµæé½æ¯ false
ãå æ¤ï¼isNaN
å½å¼æ¯å¿
è¦çã
NaN
å¼ç便º
NaN
æå¨ç®è¡éç®ï¼arithmetic operationsï¼åºç¾ undefined ææ¯ unrepresentable å¼ççµææç¢çãéäºå¼ä¸ä¸å®æ¯æº¢åºæ¢ä»¶ãNaN
亦çºè©¦å給毫ç¡å¯ç¨æ¸åçåå§å¼ãäºä»¥å¼·å¶éç®ä¹çµæã
ä¾å¦ï¼é¶é¤ä»¥é¶ççµæææ¯ NaN
ââä¸éæå
¶ä»æ¸åé¤ä»¥é¶å䏿¯ NaN
ã
徿æ©ç isNaN
å½å¼çæ¬è¦ç¯å§ï¼å
¶éå°éæ¸å¼ä¹è¡çºï¼ä¸æ·æäººå°æè³æ¥µãç¶ isNaN
å½å¼ç忏䏦鿏ååå¥æï¼æ¤å¼æå
å¼·å¶è½æå°æ¸åãè©²å¼æ¥èææ¸¬å®æ¤å¼æ¯å¦çº NaN
ãå æ¤ï¼ç¶è¢«å¼·å¶è½æç鿏åï¼çµ¦åºäºææçé NaN å¼ï¼ç¶å
¸æ¡ä¾çºç©ºçå串è叿åå§å¼ï¼å®åå¨å¼·å¶è½ææï¼æçµ¦äºæ¸åçµæ 0 æ 1ï¼æï¼æåå³ä¸å¦é æçãfalseãå¼ï¼ä»¥ç©ºçå串çºä¾ï¼å®å¾æé¡¯å°ã鿏åããéæ®µæäººç³¾çµçé»ï¼ä¹åºæ¼ã鿏åãè¡èªçãæ¸åãä¸è©ãç± IEEE-754 æµ®é»å¼å®ç¾©ä¹äºå¯¦èä¾ãéåå½å¼è¦è§£éçºãç¶éåå¼ï¼è¢«å¼·å¶è½æçºæ¸å¼æï¼å®éæ¯ IEEE-754 çã鿏åãå¼åï¼ãççæ¡ã
ææ°ç ECMAScriptï¼ES2015ï¼çæ¬å°å
¥äº Number.isNaN()
å½å¼ãå管 Number.isNaN
ç NaN
ä¾èç¶æäºæ¸åä¸çæç¾©ãè䏿¯ç°¡å®çã鿏åãï¼Number.isNaN(x)
å¨åµæ¸¬ x
çº NaN
è妿æ¯è¼å¯é ãå¦å¤ï¼å¦æå¨ç¼ºå° Number.isNaN
çæ
æ³ä¸ï¼éé表éå¼(x != x)
便ª¢æ¸¬è®éx
æ¯å¦æ¯ NaN ææ´å çå¯é ã
ä¸å isNaN
ç polyfill å¯ä»¥çè§£çºï¼éå polyfill å©ç¨äº NaN
èªèº«æ°¸ä¸çæ¼èªèº«éä¸ç¹æ§ï¼ï¼
var isNaN = function (value) {
var n = Number(value);
return n !== n;
};
ç¯ä¾
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN(true); // false
isNaN(null); // false
isNaN(37); // false
// å串
isNaN("37"); // false: "37" è½æææ¸åç 37 å¾å°±ä¸æ¯ NaN äº
isNaN("37.37"); // false: "37.37" è½æææ¸åç 37.37 å¾å°±ä¸æ¯ NaN äº
isNaN("123ABC"); // true: parseInt("123ABC") æ¯ 123 ä½ Number("123ABC") æ¯ NaN
isNaN(""); // false: 空åä¸²è½æææ¸åç 0 å¾å°±ä¸æ¯ NaN äº
isNaN(" "); // false: æç©ºç½çåä¸²è½æææ¸åç 0 å¾å°±ä¸æ¯ NaN äº
// æ¥æ
isNaN(new Date()); // false
isNaN(new Date().toString()); // true
// éå嵿¸¬çé¯èª¤æ¯ä¸è½å®å
¨ä¿¡è³´ isNaN ççç±
isNaN("blabla"); // true: "blabla" è¢«è½æçºæ¸åï¼å°å
¶è§£æçºæ¸å失æå¾åå³äº NaN
實ç¨çç¹æ®çæ³è¡çº
ç¶ç¶ï¼ä½ è½ä»¥æ´ç¨éå°åçæ¹æ³å»æè isNaN()
ï¼å¦æ isNaN()
åå³ false
ï¼é£éº¼æ x
ç¨å¨ä»»ä½ç®è¡è¡¨éå¼é½ä¸æåå³ NaN
ãç¸åå°ï¼å¦æåå³ true
ï¼é£éº¼æ x
ç¨å¨ä»»ä½ç®è¡è¡¨éå¼é½ææ¯ NaN
ãéå¨ JavaScript çæç¾©æ¯ isNaN(x) == true
çæ¼ x - 0
åå³ NaN
ï¼åç®¡å¨ JavaScript è£¡é¢ x - 0 == NaN
æ°¸é åå³ falseï¼ä½ å èç¡æ³æ¸¬è©¦ï¼ââ äºå¯¦ä¸ï¼isNaN(x)
ãisNaN(x - 0)
ãisNaN(Number(x))
ãNumber.isNaN(x - 0)
ãNumber.isNaN(Number(x))
å¨ JavaScript 裡é¢ï¼é½æåå³ä¸æ¨£çæ±è¥¿ãè isNaN(x)
æ¯ææè¡¨éå¼è£¡é¢æççä¸ç¨®ã
æ¯æ¹èªªï¼ä½ å¯ä»¥ç¨éåå¼åï¼å»æ¸¬è©¦å½å¼ç忏è½ä¸è½ééç®è¡èçï¼ä¹å°±æ¯è½ãåãæ¸å䏿¨£è¢«å©ç¨ï¼ãå¦åå°±æä¾é è¨å¼ä¹é¡çãä½ å¯ä»¥ééä¸ä¸æçæ ¹æä»¥é±å¼æ¸å¼è½æï¼implicitly converting valueï¼ï¼ä»¥ä½¿ç¨ JavaScript æä¾çå ¨é¨åè½ã
function increment(x) {
if (isNaN(x)) x = 0;
return x + 1;
}
// è Number.isNaN() 䏿¨£ï¼
function increment(x) {
if (Number.isNaN(Number(x))) x = 0;
return x + 1;
}
// 以ä¸ç¯ä¾çå½å¼åæ¸ xï¼isNaN(x) 齿åå³ falseï¼
// å管 x 䏿¯æ¸åï¼ä¾èè½ç¨å¨ç®è¡è¡¨éå¼ã
increment(""); // 1: "" è¢«è½ææ 0
increment(new String()); // 1: 空åä¸²çæ°å串ç©ä»¶è¢«è½ææ 0
increment([]); // 1: [] è¢«è½ææ 0
increment(new Array()); // 1: 空é£åçæ°é£åç©ä»¶è¢«è½ææ 0
increment("0"); // 1: "0" è¢«è½ææ 0
increment("1"); // 2: "1" è¢«è½ææ 1
increment("0.1"); // 1.1: "0.1" è¢«è½ææ 0.1
increment("Infinity"); // Infinity: "Infinity" è¢«è½ææ Infinity
increment(null); // 1: null è¢«è½ææ 0
increment(false); // 1: false è¢«è½ææ 0
increment(true); // 2: true è¢«è½ææ 1
increment(new Date()); // åå³ä»¥æ¯«ç§çºå®ä½å 1ï¼ç¶ä»çæ¥æ/æé
// 以ä¸ç¯ä¾çå½å¼åæ¸ xï¼isNaN(x) 齿åå³ falseï¼è x çç¢ºæ¯æ¸åã
increment(-1); // 0
increment(-0.1); // 0.9
increment(0); // 1
increment(1); // 2
increment(2); // 3
// â¦ççâ¦
increment(Infinity); // Infinity
// 以ä¸ç¯ä¾çå½å¼åæ¸ xï¼isNaN(x) 齿åå³ trueï¼x ä¹çç¢ºä¸æ¯æ¸åã
// 使å¾å½å¼æè¢« 0 å代ï¼ä¸¦åå³ 1
increment(String); // 1
increment(Array); // 1
increment("blabla"); // 1
increment("-blabla"); // 1
increment(0 / 0); // 1
increment("0/0"); // 1
increment(Infinity / Infinity); // 1
increment(NaN); // 1
increment(undefined); // 1
increment(); // 1
// isNaN(x) è isNaN(Number(x)) æ°¸é 䏿¨£ï¼ä¸éé裡ç x æ¯å¼·å¶åå¨çï¼
isNaN(x) == isNaN(Number(x)); // éå°ææ x çå¼é½æ¯ trueï¼x == undefined ä¹ä¸ä¾å¤ï¼
// å çº isNaN(undefined) == true ä¸ Number(undefined) åå³ NaNï¼
// ä¸éâ¦â¦
isNaN() == isNaN(Number()); // falseï¼å çº isNaN() == true ä¸ Number() == 0
è¦ç¯ ç覽å¨ç¸å®¹æ§ åè¦
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4