Number.isFinite() 用于检查一个数值是否是有限的,即不是Infinity,若参数不是Number类型,则一律返回false ,接下来我们就来聊聊关于javascript es6快速入门?以下内容大家不妨参考一二希望能帮到您!

javascript es6快速入门(前端开发必备-)

javascript es6快速入门

5.1 Number.isFinite(), Number.isNaN()

Number.isFinite() 用于检查一个数值是否是有限的,即不是Infinity,若参数不是Number类型,则一律返回false 。

Number.isFinite(10); // true Number.isFinite(0.5); // true Number.isFinite(NaN); // false Number.isFinite(Infinity); // false Number.isFinite(-Infinity); // false Number.isFinite('leo'); // false Number.isFinite('15'); // false Number.isFinite(true); // false Number.isFinite(Math.random()); // true

Number.isNaN()用于检查是否是NaN,若参数不是NaN,则一律返回false。

Number.isNaN(NaN); // true Number.isNaN(10); // false Number.isNaN('10'); // false Number.isNaN(true); // false Number.isNaN(5/NaN); // true Number.isNaN('true' / 0); // true Number.isNaN('true' / 'true'); // true

区别:

与传统全局的isFinite()和isNaN()方法的区别,传统的这两个方法,是先将参数转换成数值,再判断。

而ES6新增的这两个方法则只对数值有效, Number.isFinite()对于非数值一律返回false,Number.isNaN()只有对于NaN才返回true,其他一律返回false。

isFinite(25); // true isFinite("25"); // true Number.isFinite(25); // true Number.isFinite("25"); // false isNaN(NaN); // true isNaN("NaN"); // true Number.isNaN(NaN); // true Number.isNaN("NaN"); // false

5.2 Number.parseInt(), Number.parseFloat()

这两个方法与全局方法parseInt()和parseFloat()一致,目的是逐步减少全局性的方法,让语言更模块化。

parseInt('12.34'); // 12 parseFloat('123.45#'); // 123.45 Number.parseInt('12.34'); // 12 Number.parseFloat('123.45#'); // 123.45 Number.parseInt === parseInt; // true Number.parseFloat === parseFloat; // true

5.3 Number.isInteger()

用来判断一个数值是否是整数,若参数不是数值,则返回false。

Number.isInteger(10); // true Number.isInteger(10.0); // true Number.isInteger(10.1); // false

5.4 Math对象的拓展

ES6新增17个数学相关的静态方法,只能在Math对象上调用。

// 正常使用 Math.trunc(1.1); // 1 Math.trunc(1.9); // 1 Math.trunc(-1.1); // -1 Math.trunc(-1.9); // -1 Math.trunc(-0.1234); // -0 // 参数为非数值 Math.trunc('11.22'); // 11 Math.trunc(true); // 1 Math.trunc(false); // 0 Math.trunc(null); // 0 // 参数为空和无法取整 Math.trunc(NaN); // NaN Math.trunc('leo'); // NaN Math.trunc(); // NaN Math.trunc(undefined); // NaN

ES5实现:

Math.trunc = Math.trunc || function(x){ return x < 0 ? Math.ceil(x) : Math.floor(x); }

Math.sign(-1); // -1 Math.sign(1); // 1 Math.sign(0); // 0 Math.sign(-0); // -0 Math.sign(NaN); // NaN Math.sign(''); // 0 Math.sign(true); // 1 Math.sign(false);// 0 Math.sign(null); // 0 Math.sign('9'); // 1 Math.sign('leo');// NaN Math.sign(); // NaN Math.sign(undefined); // NaN

ES5实现

Math.sign = Math.sign || function (x){ x = x; if (x === 0 || isNaN(x)){ return x; } return x > 0 ? 1: -1; }

Math.cbrt(-1); // -1 Math.cbrt(0); // 0 Math.cbrt(1); // 1 Math.cbrt(2); // 1.2599210498 Math.cbrt('1'); // 1 Math.cbrt('leo'); // NaN

ES5实现

Math.cbrt = Math.cbrt || function (x){ var a = Math.pow(Math.abs(x), 1/3); return x < 0 ? -y : y; }

Math.clz32(0) // 32 Math.clz32(1) // 31 Math.clz32(1000) // 22 Math.clz32(0b01000000000000000000000000000000) // 1 Math.clz32(0b00100000000000000000000000000000) // 2

Math.imul(2, 4) // 8 Math.imul(-1, 8) // -8 Math.imul(-2, -2) // 4

Math.fround(0) // 0 Math.fround(1) // 1 Math.fround(2 ** 24 - 1) // 16777215

Math.hypot(3, 4); // 5 Math.hypot(3, 4, 5); // 7.0710678118654755 Math.hypot(); // 0 Math.hypot(NaN); // NaN Math.hypot(3, 4, 'foo'); // NaN Math.hypot(3, 4, '5'); // 7.0710678118654755 Math.hypot(-3); // 3

Math.expm1(-1) // -0.6321205588285577 Math.expm1(0) // 0 Math.expm1(1) // 1.718281828459045

ES5实现

Math.expm1 = Math.expm1 || function(x) { return Math.exp(x) - 1; };

Math.log1p(1) // 0.6931471805599453 Math.log1p(0) // 0 Math.log1p(-1) // -Infinity Math.log1p(-2) // NaN

ES5实现

Math.log1p = Math.log1p || function(x) { return Math.log(1 x); };

Math.log10(2) // 0.3010299956639812 Math.log10(1) // 0 Math.log10(0) // -Infinity Math.log10(-2) // NaN Math.log10(100000) // 5

ES5实现

Math.log10 = Math.log10 || function(x) { return Math.log(x) / Math.LN10; };

Math.log2(3) // 1.584962500721156 Math.log2(2) // 1 Math.log2(1) // 0 Math.log2(0) // -Infinity Math.log2(-2) // NaN Math.log2(1024) // 10 Math.log2(1 << 29) // 29

ES5实现

Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)

  • Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
  • Math.tanh(x) 返回x的双曲正切(hyperbolic tangent)
  • Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine)
  • Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine)
  • Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)
  • 5.5 指数运算符

    新增的指数运算符(**):

    2 ** 2; // 4 2 ** 3; // 8 2 ** 3 ** 2; // 相当于 2 ** (3 ** 2); 返回 512

    指数运算符(**)与Math.pow的实现不相同,对于特别大的运算结果,两者会有细微的差异。

    Math.pow(99, 99) // 3.697296376497263e 197 99 ** 99 // 3.697296376497268e 197

    公众号:前端自习课

    ,