数值的表示
二进制表示法新写法: 前缀 0b 或 0B 。
console.log(0b11 === 3); // true
console.log(0B11 === 3); // true
八进制表示法新写法: 前缀 0o 或 0O 。
console.log(0o11 === 9); // true
console.log(0O11 === 9); // true
常量
Number.EPSILON
Number.EPSILON 属性表示 1 与大于 1 的最小浮点数之间的差。
它的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。
测试数值是否在误差范围内:
0.1 + 0.2 === 0.3; // false
// 在误差范围内即视为相等
equal = (Math.abs(0.1 - 0.3 + 0.2) < Number.EPSILON); // true
属性特性
writable:false
enumerable:false
configurable:false
最大/最小安全整数
安全整数
安全整数表示在 JavaScript 中能够精确表示的整数,安全整数的范围在 2 的 -53 次方到 2 的 53 次方之间(不包括两个端点),超过这个范围的整数无法精确表示。
最大安全整数
安全整数范围的上限,即 2 的 53 次方减 1 。
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2;
Number.MAX_SAFE_INTEGER === Number.MAX_SAFE_INTEGER + 1;
Number.MAX_SAFE_INTEGER - 1 === Number.MAX_SAFE_INTEGER - 2;
最小安全整数
安全整数范围的下限,即 2 的 53 次方减 1 的负数。
Number.MIN_SAFE_INTEGER + 1 === Number.MIN_SAFE_INTEGER + 2;
Number.MIN_SAFE_INTEGER === Number.MIN_SAFE_INTEGER - 1;
Number.MIN_SAFE_INTEGER - 1 === Number.MIN_SAFE_INTEGER - 2;
属性特性
writable:false
enumerable:false
configurable:false
方法
Number 对象新方法
Number.isFinite()
用于检查一个数值是否为有限的( finite ),即不是 Infinity
console.log( Number.isFinite(1));
console.log( Number.isFinite(0.1));
console.log( Number.isFinite(NaN));
console.log( Number.isFinite(Infinity));
console.log( Number.isFinite(-Infinity));
console.log( Number.isFinite('foo'));
console.log( Number.isFinite('15'));
console.log( Number.isFinite(true));
Number.isNaN()
用于检查一个值是否为 NaN 。
console.log(Number.isNaN(NaN));
console.log(Number.isNaN('true'/0));
Number.isNaN("NaN");
Number.isNaN(undefined);
Number.isNaN({});
Number.isNaN("true");
从全局移植到 Number 对象的方法
逐步减少全局方法,用于全局变量的模块化。
方法的行为没有发生改变。
Number.parseInt()
用于将给定字符串转化为指定进制的整数。
Number.parseInt('12.34');
Number.parseInt(12.34);
Number.parseInt('0011',2);
Number.parseInt === parseInt;
Number.parseFloat()
用于把一个字符串解析成浮点数。
Number.parseFloat('123.45')
Number.parseFloat('123.45abc')
Number.parseFloat('abc')
Number.parseFloat === parseFloat
Number.isInteger()
用于判断给定的参数是否为整数。
Number.isInteger(value)
Number.isInteger(0);
Number.isInteger(1);
Number.isInteger(1.0);
Number.isInteger(1.1);
Number.isInteger(Math.PI);
Number.isInteger(NaN);
Number.isInteger(Infinity);
Number.isInteger(-Infinity);
Number.isInteger("10");
Number.isInteger(true);
Number.isInteger(false);
Number.isInteger([1]);
Number.isInteger(1.0000000000000001)
Number.isInteger(5E-324);
Number.isInteger(5E-325);
Number.isSafeInteger()
用于判断数值是否在安全范围内。
Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1);
Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1);
Math 对象的扩展
ES6 在 Math 对象上新增了 17 个数学相关的静态方法,这些方法只能在 Math 中调用。
普通计算
Math.cbrt
用于计算一个数的立方根。
Math.cbrt(1);
Math.cbrt(0);
Math.cbrt(-1);
Math.cbrt('1');
Math.cbrt('hhh');
Math.imul
两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
Math.imul(1, 2);
Math.imul(0x7fffffff, 0x7fffffff);
Math.hypot
用于计算所有参数的平方和的平方根。
Math.hypot(3, 4);
Math.hypot(1, 2, '3');
Math.hypot(true);
Math.hypot(false);
Math.hypot();
Math.hypot([]);
Math.hypot(Infinity);
Math.hypot(-Infinity);
Math.hypot(NaN);
Math.hypot(3, 4, 'foo');
Math.hypot({});
Math.clz32
用于返回数字的32 位无符号整数形式的前导0的个数。
Math.clz32(0);
Math.clz32(1);
Math.clz32(0b01000000000100000000000000000000);
Math.clz32(0.5);
Math.clz32('1');
Math.clz32();
Math.clz32([]);
Math.clz32({});
Math.clz32(NaN);
Math.clz32(Infinity);
Math.clz32(-Infinity);
Math.clz32(undefined);
Math.clz32('hhh');
数字处理
Math.trunc
用于返回数字的整数部分。
Math.trunc(12.3);
Math.trunc(12);
Math.trunc(-0.5);
Math.trunc(0.5);
Math.trunc("12.3");
Math.trunc();
Math.trunc(NaN);
Math.trunc("hhh");
Math.trunc("123.2hhh");
Math.fround
用于获取数字的32位单精度浮点数形式。
Math.fround(-(2**24)+1);
Math.fround(2 ** 24 - 1);
Math.fround(1.234)
Math.fround(0.3);
Math.fround(NaN)
Math.fround(Infinity)
Math.fround('5');
Math.fround(true);
Math.fround(null);
Math.fround([]);
Math.fround({});
判断
Math.sign
判断数字的符号(正、负、0)。
Math.sign(1);
Math.sign(-1);
Math.sign(0);
Math.sign(-0);
Math.sign('1');
Math.sign('-1');
Math.sign(NaN);
Math.sign('hhh');
对数方法
Math.expm1()
用于计算 e 的 x 次方减 1 的结果,即 Math.exp(x) - 1 。
Math.expm1(1);
Math.expm1(0);
Math.expm1(-1);
Math.expm1('0');
Math.expm1(NaN);
Math.log1p(x)
用于计算1 + x 的自然对数,即 Math.log(1 + x) 。
Math.log1p(1);
Math.log1p(0);
Math.log1p(-1);
Math.log1p(-2);
Math.log10(x)
用于计算以 10 为底的 x 的对数。
Math.log10(1);
Math.log10('1');
Math.log10(0);
Math.log10(-1);
Math.log2()
用于计算 2 为底的 x 的对数。
Math.log2(1);
Math.log2('1');
Math.log2(0);
Math.log2(-1);
双曲函数方法
-
Math.sinh(x): 用于计算双曲正弦。
-
Math.cosh(x): 用于计算双曲余弦。
-
Math.tanh(x): 用于计算双曲正切。
-
Math.asinh(x): 用于计算反双曲正弦。
-
Math.acosh(x): 用于计算反双曲余弦。
-
Math.atanh(x): 用于计算反双曲正切。
指数运算符
1 ** 2;
2 ** 2 ** 3;
let exam = 2;
exam ** = 2;
点我分享笔记