Baseline Widely available
å
¨å±å±æ§ NaN
æ¯ä¸ä¸ªè¡¨ç¤ºéæ°åçå¼ã
function sanitize(x) {
if (isNaN(x)) {
return NaN;
}
return x;
}
console.log(sanitize("1"));
// Expected output: "1"
console.log(sanitize("NotANumber"));
// Expected output: NaN
å¼
å
¶ä¸ Number.NaN
çå¼ç¸åã
NaN
æ¯å
¨å±å¯¹è±¡çä¸ä¸ªå±æ§ãæ¢å¥è¯è¯´ï¼å®æ¯å
¨å±ä½ç¨åä¸çä¸ä¸ªåéã
å¨ç°ä»£æµè§å¨ä¸ï¼NaN
æ¯ä¸ä¸ªä¸å¯é
ç½®ãä¸å¯åç屿§ãå³ä½¿ä¸æ¯è¿æ ·ï¼ä¹è¦é¿å
éåå®ã
æäºç§ä¸åç±»åçæä½è¿å NaN
ï¼
parseInt("blabla")
ãNumber(undefined)
ï¼æéå¼è½¬æ¢ï¼å¦ Math.abs(undefined)
ï¼Math.sqrt(-1)
ï¼0 * Infinity
ã1 ** Infinity
ãInfinity / Infinity
ãInfinity - Infinity
ï¼NaN
çæ¹æ³æè¡¨è¾¾å¼ï¼ä¾å¦ï¼7 ** NaN
ã7 * "blabla"
ï¼ââè¿æå³ç NaN
å
·æä¼ ææ§new Date("blabla").getTime()
ã"".charCodeAt(1)
ï¼NaN
åå
¶è¡ä¸ºä¸æ¯ JavaScript åæçãå®å¨æµ®ç¹è¿ç®ä¸çè¯ä¹ï¼å
æ¬ NaN !== NaN
ï¼æ¯ç± IEEE 754 æå®çãNaN
çè¡ä¸ºå
æ¬ï¼
NaN
æ¶åæ°å¦è¿ç®ï¼ä½ä¸æ¶åä½è¿ç®ï¼ï¼ç»æé叏乿¯ NaN
ãï¼åè§ä¸é¢çåä¾ãï¼NaN
æ¯ä»»ä½å
³ç³»æ¯è¾ï¼>
ã<
ã>=
ã<=
ï¼çæä½æ°ä¹ä¸æ¶ï¼ç»ææ»æ¯ false
ãNaN
ä¸çäºï¼éè¿ ==
ã!=
ã===
å !==
ï¼ä»»ä½å
¶ä»å¼ââå
æ¬ä¸å¦ä¸ä¸ª NaN
å¼ãNaN
乿¯ JavaScript ä¸çåå¼ä¹ä¸ã
è¦å¤æä¸ä¸ªå¼æ¯å¦ä¸º NaN
ï¼å¯ä»¥ä½¿ç¨ Number.isNaN()
æ isNaN()
æ¥ææ¸
æ¥å°ç¡®å®ä¸ä¸ªå¼æ¯å¦ä¸º NaN
ââæè
ï¼å 为 NaN
æ¯å¯ä¸ä¸èªèº«ä¸ç¸ççå¼ï¼æä»¥ä½ å¯ä»¥æ§è¡ç±»ä¼¼ x !== x
è¿æ ·çèªææ¯è¾ã
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
Number.isNaN(NaN); // true
function valueIsNaN(v) {
return v !== v;
}
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
使¯ï¼è¯·æ³¨æ isNaN()
å Number.isNaN()
ä¹é´çåºå«ï¼å¦æå½å弿¯ NaN
ï¼æè
å°å
¶å¼ºå¶è½¬æ¢ä¸ºæ°ååå°æ¯ NaN
ï¼ååè
å°è¿å true
ãèåè
ä»
å½å¼å½å为 NaN
æ¶æä¸º true
ï¼
isNaN("hello world"); // true
Number.isNaN("hello world"); // false
åºäºåæ ·çåå ï¼ä½¿ç¨ BigInt 弿¶ isNaN()
伿åºé误ï¼è Number.isNaN()
ä¸ä¼ï¼
isNaN(1n); // TypeError: Conversion from 'BigInt' to 'number' is not allowed.
Number.isNaN(1n); // false
æ¤å¤ï¼ä¸äºæ°ç»æ¹æ³ä¸è½æ¾å° NaN
ï¼èå¦ä¸äºå¯ä»¥ãä¹å°±æ¯è¯´ï¼æ¥æ¾ç´¢å¼çï¼indexOf()
ãlastIndexOf()
ï¼ä¸è½æ¾å° NaN
ï¼èæ¥æ¾å¼çï¼includes()
ï¼å¯ä»¥ï¼
const arr = [2, 4, NaN, 12];
arr.indexOf(NaN); // -1
arr.includes(NaN); // true
// æ¥åæ£ç¡®å®ä¹çæè¨çæ¹æ³æ»æ¯è½å¤æ¾å° NaN
arr.findIndex((n) => Number.isNaN(n)); // 2
æå
³ NaN
åå
¶æ¯è¾çæ´å¤ä¿¡æ¯ï¼è¯·åé
ç¸çæ§å¤æã
å¯ä»¥ç¨ä¸åçäºè¿å¶è¡¨ç¤ºçæä¸¤ä¸ªé½æ¯ NaN
çæµ®ç¹æ°ï¼è¿æ¯å ä¸ºå¨ IEEE 754 ç¼ç ä¸ï¼ä»»ä½ææ°ä¸º 0x7ff
ä¸å°¾æ°éé¶çæµ®ç¹æ°é½æ¯ NaN
ãå¨ JavaScript ä¸ï¼ä½ å¯ä»¥ä½¿ç¨ç±»ååæ°ç»æ¥è¿è¡ä½æä½ã
const f2b = (x) => new Uint8Array(new Float64Array([x]).buffer);
const b2f = (x) => new Float64Array(x.buffer)[0];
// è·å NaN çåè表示
const n = f2b(NaN);
const m = f2b(NaN);
// æ´æ¹ç¬¦å·ä½ï¼å¯¹äº NaN èè¨ï¼è¿ä¸ªæ¯ç¹ä½ä¸éè¦ã
n[7] += 2 ** 7;
// n[0] += 2**7; 对äºå¤§ç«¯å¤çå¨
const nan2 = b2f(n);
console.log(nan2); // NaN
console.log(Object.is(nan2, NaN)); // true
console.log(f2b(NaN)); // Uint8Array(8) [0, 0, 0, 0, 0, 0, 248, 127]
console.log(f2b(nan2)); // Uint8Array(8) [0, 0, 0, 0, 0, 0, 248, 255]
// æ´æ¹ç¬¬ä¸ä¸ªæ¯ç¹ä½ï¼å³ç¬¦å·ä½ï¼å¯¹äº NaN èè¨ï¼è¿ä¸ªæ¯ç¹ä½ä¸éè¦ã
m[0] = 1;
// m[7] = 1; 对äºå¤§ç«¯å¤çå¨
const nan3 = b2f(m);
console.log(nan3); // NaN
console.log(Object.is(nan3, NaN)); // true
console.log(f2b(NaN)); // Uint8Array(8) [0, 0, 0, 0, 0, 0, 248, 127]
console.log(f2b(nan3)); // Uint8Array(8) [1, 0, 0, 0, 0, 0, 248, 127]
éé»éé¸ç NaN å¼
NaN
éè¿æ°å¦è¿ç®è¿è¡ä¼ æï¼å æ¤é常å¨è®¡ç®ç»ææ¶æµè¯ NaN
䏿¬¡å°±è¶³ä»¥æ£æµé误æ¡ä»¶ãNaN
被éé»è½¬ä¹çå¯ä¸æ
嵿¯ä½¿ç¨ææ°ä¸º 0
æ±å¹æ¶ï¼å®ç«å³è¿å 1
è䏿µè¯åºæ°çå¼ã
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