es6学习笔记四

原创 yvette 随笔 es6 206阅读 2017-11-13 17:12:26 举报

参考 阮一峰 EECMAScript 6 入门

二进制和八进制表示法
javascript 代码

从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示。
javascript 代码

如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。
javascript 代码

Number.isFinite()用来检查一个数值是否为有限的(finite)。
Number.isNaN()用来检查一个值是否为NaN。
javascript 代码

传统方法先调用Number()将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,Number.isFinite()对于非数值一律返回false, Number.isNaN()只有对于NaN才返回true,非NaN一律返回false。

ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。即Number.parseInt()和Number.parseFloat();

Number.isInteger()用来判断一个值是否为整数
javascript 代码

Number.EPSILON实际上是 JavaScript 能够表示的最小精度。误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。
目的:为浮点数计算,设置一个误差范围,我们知道浮点数计算是不精确的。
javascript 代码

安全整数和 Number.isSafeInteger()
JavaScript 能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。ES6引入了Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。
javascript 代码

Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。
javascript 代码

Math.trunc方法用于去除一个数的小数部分,返回整数部分。
对于非数值,Math.trunc内部使用Number方法将其先转为数值。
对于空值和无法截取整数的值,返回NaN。
javascript 代码

Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。

它会返回五种值。
参数为正数,返回+1;
参数为负数,返回-1;
参数为0,返回0;
参数为-0,返回-0;
其他值,返回NaN。

如果参数是非数值,会自动转为数值。对于那些无法转为数值的值,会返回NaN。
javascript 代码

Math.cbrt方法用于计算一个数的立方根。
对于非数值,Math.cbrt方法内部也是先使用Number方法将其转为数值。
javascript 代码

JavaScript的整数使用32位二进制形式表示,Math.clz32方法返回一个数的32位无符号整数形式有多少个前导0。对于小数,Math.clz32方法只考虑整数部分。
javascript 代码

左移运算符(<<)与Math.clz32方法直接相关。
javascript 代码

Math.imul方法返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。
如果只考虑最后32位,大多数情况下,Math.imul(a, b)与a b的结果是相同的,即该方法等同于(a b)|0的效果(超过32位的部分溢出)。之所以需要部署这个方法,是因为JavaScript有精度限制,超过2的53次方的值无法精确表示。这就是说,对于那些很大的数的乘法,低位数值往往都是不精确的,Math.imul方法可以返回正确的低位数值
javascript 代码

Math.fround方法返回一个数的单精度浮点数形式。
对于整数来说,Math.fround方法返回结果不会有任何不同,区别主要是那些无法用64个二进制位精确表示的小数。这时,Math.fround方法会返回最接近这个小数的单精度浮点数。
javascript 代码

Math.hypot方法返回所有参数的平方和的平方根。
如果参数不是数值,Math.hypot方法会将其转为数值。只要有一个参数无法转为数值,就会返回NaN。
javascript 代码

ES6新增了4个对数相关方法。
Math.expm1(x)返回ex - 1,即Math.exp(x) - 1。
javascript 代码

Math.log1p(x)方法返回1 + x的自然对数,即Math.log(1 + x)。如果x小于-1,返回NaN。
javascript 代码

Math.log10(x)返回以10为底的x的对数。如果x小于0,则返回NaN。
javascript 代码

Math.log2(x)返回以2为底的x的对数。如果x小于0,则返回NaN。
javascript 代码

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)

对于判断符号位的正负,Math.sign()不是很有用。JavaScript 内部使用64位浮点数(国际标准IEEE 754)表示数值,IEEE 754规定第一位是符号位,0表示正数,1表示负数。所以会有两种零,+0是符号位为0时的零值,-0是符号位为1时的零值。实际编程中,判断一个值是+0还是-0非常麻烦,因为它们是相等的。
目前,有一个提案,引入了Math.signbit()方法判断一个数的符号位是否设置了
如果参数是NaN,返回false
如果参数是-0,返回true
如果参数是负值,返回true
其他情况返回false
javascript 代码

ES2016 新增了一个指数运算符()。
javascript 代码**

注意,在 V8 引擎中,指数运算符与Math.pow的实现不相同,对于特别大的运算结果,两者会有细微的差异。
html 代码

引入了新的数据类型 Integer(整数)只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。
为了与 Number 类型区别,Integer 类型的数据必须使用后缀n表示
javascript 代码

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复