摘要:数值类型扩展类型新增了如下特性支持二进制和八进制二进制用或开头八进制用或开头新加方法判断一个数字是否有限方法判断一个变量是否。值得注意的是如果将非数值传入这两个函数一律返回。对于无法转换为数值的参数返回符合函数。
数值类型扩展
Number 类型新增了如下特性:
支持二进制和八进制
二进制用 0b 或 0B 开头, 八进制用 0o 或 0O 开头:
Number("0b1101"); //13 Number("0o107"); //71
新加 Number.isFinite() 方法判断一个数字是否有限, Number.isNaN() 方法判断一个变量是否 NaN。值得注意的是, 如果将非数值传入这两个函数, 一律返回 false。
将原有的 window.parseInt() 和 window.parseFloat() 移植到了 Number.parseInt() 和 Number.parseFloat(), 行为保持不变。
Number.parseInt === window.parseInt; //true Number.parseFloat === window.parseFloat; //true
引入 Number.isInteger() 判断一个数字是不是整数, 注意到, 3.0 也是个整数。如果将非数值传入函数, 一律返回 false。
Number.EPSILON, 一个极小的量, 用来解决浮点数计算的误差
if(0.1 + 0.2 === 0.3){ console.log("true"); } else { console.log("false") } //以上if语句将输出 false if(0.1 + 0.2 - 0.3 < Number.EPSILON){ console.log("true"); } else { console.log("false") } //以上if语句将输出 true //其实我们可以封装一下: Object.defineProperty(Number, "isEqual", { value: function isEqual(a, b){ return Math.abs(a - b) < Number.EPSILON; }, writable: true, configurable: true, enumerable: false }); Number.isEqual(0.1 + 0.2, 0.3); //true
Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER 和 Number.isSafeInteger()
js 所能表示的整数介于$-2^{53}$~$2^{53}$之间, 超过的数就会有误差, 所以:
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1; //true Number.MIN_SAFE_INTEGER === -Math.pow(2, 53) + 1; //true
我们使用Number.isSafeInteger()判断一个数是否在这个范围内, 返回 Boolean 值。如果传入非数字或非整数, 一律返回 false。这里同样注意:3.0是个整数。
Math对象扩展
对于数学运算, 这里不再一一展开了, 以下列举了 ES6 新增的17个数学函数
Math.trunc(); 直接舍去一个数的小数部分。对于无法转换为数值的参数, 返回 NaN
Math.sign(); 符合函数。传入正数返回1, 负数返回-1, 0返回0, -0返回-0, 其他值返回 NaN
Math.cbrt(); 返回一个数的立方根。对于无法转换为数值的参数, 返回 NaN
Math.clz32(); 返回一个数的32位无符号二进制的前导零个数。对于小数, 只考虑器整数部分, 对于无法转换为数值的参数, 返回 32
Math.imul(); 返回2个数有符号32位乘积的十进制, 相当于(a*b)|0, 通常和乘法计算一致, 但可防止结果溢出
Math.fround(); 返回一个数的单精度浮点形式。对于无法转换为数值的参数, 返回 NaN
Math.hypot(); 返回所以函数平方和的平方根(欧氏距离)。只要有1个无法转换为数值的参数, 返回 NaN
Math.expm1(); 即$e^x-1$
Math.log1p(); 即$ln(x+1)$, 参数小于0或不能转换为大于零的数, 返回 NaN
Math.log10(); 即$log_{10}{x}$, 参数小于0或不能转换为大于零的数, 返回 NaN
Math.log2(); 即$log_{2}{x}$, 参数小于0或不能转换为大于零的数, 返回 NaN
Math.sinh(); 返回参数的双曲正弦值
Math.cosh(); 返回参数的双曲余弦值
Math.tanh(); 返回参数的双曲正切值
Math.asinh(); 返回参数的反双曲正弦值
Math.acosh(); 返回参数的反双曲余弦值
Math.atanh(); 返回参数的反双曲正切值
指数运算符
ES7 提出指数运算符(**),已可以实现
2 ** 3 = 8; //相当于 Math.pow(2, 3) //支持赋值运算 let a = 2; a **= 3; console.log(a); //8
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/97424.html
摘要:二进制和八进制表示法提供了二进制和八进制数值的新的写法,分别用前缀或和或表示。用来检查是否为有穷以及是否为这两个新方法只对数值有效,非数值一律返回。引入了和这两个常量,用来表示这个范围的上下限。因为有精度限制,超过的次方的值无法精确表示。 1 二进制和八进制表示法 ES6提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。 console.log(0b10...
摘要:属性的简洁表示法允许直接写入变量和函数作为对象的属性和方法。,中有返回一个数组,成员是参数对象自身的不含继承的所有可遍历属性的键名。对象的扩展运算符目前,有一个提案,将解构赋值扩展运算符引入对象。 1 属性的简洁表示法 ES6允许直接写入变量和函数作为对象的属性和方法。 写入属性 var name = value; var obj = { name }; console.log...
摘要:基本类型是一种解决命名冲突的工具。这样,就有了个基本类型和个复杂类型使用需要注意以下几点和一样不具有构造函数,不能用调用。判断对象是否某个构造函数的实例,运算符会调用它是一个数组对象属性。即,当存在时,以此为构造函数构建对象。 Symbol基本类型 Symbol 是一种解决命名冲突的工具。试想我们以前定义一个对象方法的时候总是要检查是否已存在同名变量: if(String && Str...
摘要:笔记和和是块作用域的,是声明常量用的。一个对象如果要有可被循环调用的接口,就必须在的属性上部署遍历器生成方法原型链上的对象具有该方法也可。这种方式会访问注册表,其中存储了已经存在的一系列。这种方式与通过定义的独立不同,注册表中的是共享的。 ECMAScript6 笔记 let 和 const let和const是块作用域的 ,const是声明常量用的。 {let a = 10;} a ...
阅读 1890·2021-11-24 09:39
阅读 2534·2021-10-14 09:43
阅读 3317·2021-10-08 10:10
阅读 2264·2021-09-22 15:54
阅读 2339·2019-08-29 17:20
阅读 1573·2019-08-28 18:14
阅读 2373·2019-08-26 13:28
阅读 1111·2019-08-26 12:16