JavaScript Number (數值)
Number 物件也就是數值型態的物件,如整數 (integer) 或帶有小數點的浮點數 (floating point) 都是 Number。
JavaScript Number 是 64-bit Floating Point。對於需要處理超過 Number 安全範圍的大整數,可以使用 BigInt。
數值可以用字面常量 (literal) 的方式來寫:
const x = 180;
const y = 30.25;
也可以用科學記號表示法 (scientific (exponent) notation):
const x = 101e5; // 10100000
const y = 101e-5; // 0.00101
八進位表示法 (Octal)
你可以用 0 開頭來用八進位表示法表示一個數字:
const x = 0o17; // ES6 建議使用 0o 前綴文字
console.log(x); // 15
十六進位表示法 (Hexadecimal)
你可以用 0x 開頭來用十六進位表示法表示一個數字:
const x = 0xaf;
console.log(x); // 175
Infinity
Infinity 或 -Infinity 是 JavaScript 一個 global 的屬性,表示無限大或無限小。
例如:
// 會輸出 false
console.log(100000000000 > Infinity);
// 會輸出 true
console.log(-99999 > -Infinity);
// x = Infinity
const x = 2 / 0;
// y = -Infinity
const y = -2 / 0;
// 輸出 number
console.log(typeof Infinity);
NaN (Not a Number)
NaN 是 JavaScript 一個 global 的屬性,表示一個值是非數值。
例如:
// x = NaN
const x = 100 - 'string';
// 一個 NaN 做數值運算,返回的結果也是 NaN
// y = NaN
const y = 5 + x;
JavaScript 還有一個 global function isNaN 來讓看可以判段一個值是不是 NaN。例如:
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN(true); // false
isNaN(null); // false
isNaN(20); // false
ES6 新增了
Number.isNaN() 方法,它比 global 的 isNaN() 更嚴謹,不會對參數做強制轉型。例如 isNaN('abc') 是 true,但 Number.isNaN('abc') 是 false。
另外還有 Number.isFinite() 用來檢查是否為有限數值,以及 Number.isInteger() 用來檢查是否為整數。Number() 函數 - 型別轉換
Number() 可以用來將其他的資料型態轉型 (type conversion) 成數值型態。
字串轉數字
Number('3.14'); // 3.14
Number('100'); // 100
Number(' '); // 0
Number(''); // 0
Number('a123'); // NaN
布林值轉數字
Number(false); // 0
Number(true); // 1