javascript es6快速入门(前端开发必备-)
Number.isFinite() 用于检查一个数值是否是有限的,即不是Infinity,若参数不是Number类型,则一律返回false ,接下来我们就来聊聊关于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:
- 用来去除小数的小数部分,返回整数部分。
- 若参数为非数值,则先转为数值。
- 若参数为空值或无法截取整数的值,则返回NaN。
// 正常使用 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
- 参数为0, 返回 0
- 参数为-0, 返回 -0
- 参数为其他值, 返回 NaN
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():
- 用来计算一个数的立方根,若参数为非数值则先转成数值。
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():
- 用于返回一个数的 32 位无符号整数形式有多少个前导 0。
Math.clz32(0) // 32 Math.clz32(1) // 31 Math.clz32(1000) // 22 Math.clz32(0b01000000000000000000000000000000) // 1 Math.clz32(0b00100000000000000000000000000000) // 2
- Math.imul():
- 用于返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
Math.imul(2, 4) // 8 Math.imul(-1, 8) // -8 Math.imul(-2, -2) // 4
- Math.fround():
- 用来返回一个数的2位单精度浮点数形式。
Math.fround(0) // 0 Math.fround(1) // 1 Math.fround(2 ** 24 - 1) // 16777215
- Math.hypot():
- 用来返回所有参数的平方和的平方根。
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():
- 用来返回ex - 1,即Math.exp(x) - 1。
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 x的自然对数,即Math.log(1 x)。如果x小于-1,返回NaN。
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():
- 用来返回以 10为底的x的对数。如果x小于 0,则返回 NaN。
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():
- 用来返回以 2 为底的x的对数。如果x小于0,则返回 NaN。
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)
新增的指数运算符(**):
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
公众号:前端自习课
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com