關於 NaN 這個東西

奇妙的東西~

簡述

這邊先強調一下:

  • NaN 不是一種資料型態
  • NaN 不是一種資料型態
  • NaN 不是一種資料型態

NaN 其實是一個 number:

1
2
console.log(typeof NaN); // number
console.log(Number('abc')); // NaN

只不過它有一個很奇葩的現象:

1
2
const a = Number('abc') // NaN
console.log(a === a) // false

居然有變數不等於變數自己的情況?沒錯,這就是 NaN 的特性,它不等於任何人,即便是它自己。

所以就特別記一下就好,NaN 就是個特殊的 case。如果你真的要檢查一個變數是不是 NaN 可以用 isNaN 來檢查:

1
2
3
console.log(isNaN(NaN)); // true
console.log(isNaN('abc')); // true
console.log(isNaN('123')); // false

'123' 這個 case 你能想成是這樣:

1
console.log(isNaN(Number('123'))); 

這樣就不會覺得困惑了。

關於 typeof 和資料型態 mentor-program-day82
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×