资讯专栏INFORMATION COLUMN

es6学习笔记-数值的扩展_V1.0_byKL

宋华 / 1776人阅读

摘要:学习笔记数值的扩展有一些不常用或者还不支持的就没有记录了总体来说本篇只是一个备忘而已用来检查一个数值是否为有限的。两个新方法只对数值有效,非数值一律返回。参考引用数值扩展

es6学习笔记-数值的扩展

有一些不常用或者还不支持的就没有记录了,总体来说本篇只是一个备忘而已

Number.isFinite(), Number.isNaN()

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

console.log(Number.isFinite(15)); // true
console.log(Number.isFinite(0.8)); // true
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // false
console.log(Number.isFinite("foo")); // false,字符串也是false
console.log(Number.isFinite("15")); // false
console.log(Number.isFinite(true)); // false,布尔值也是false

Number.isNaN()用来检查一个值是否为NaN。

console.log(Number.isNaN(NaN)) // true
console.log(Number.isNaN(15)) // false
console.log(Number.isNaN("15")) // false
console.log(Number.isNaN(true)) // false
console.log(Number.isNaN(9/NaN)) // true
console.log(Number.isNaN("true"/0)) // true
console.log(Number.isNaN("true"/"true")) // true

两个新方法只对数值有效,非数值一律返回false。

parseInt()和parseFloat()

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

// ES5的写法
parseInt("12.34") // 12
parseFloat("123.45#") // 123.45

// ES6的写法
Number.parseInt("12.34") // 12
Number.isInteger()

Number.isInteger()用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值。

console.log(Number.isInteger(25)) // true
console.log(Number.isInteger(25.0)) // true
console.log(Number.isInteger(25.1)) // false
console.log(Number.isInteger("15")) // false
console.log(Number.isInteger(true)) // false
Number.EPSILON

ES6在Number对象上面,新增一个极小的常量Number.EPSILON,为浮点数计算,设置一个误差范围。

如果这个误差能够小于Number.EPSILON,我们就可以认为得到了正确结果。

0.1 + 0.2
// 0.30000000000000004

0.1 + 0.2 - 0.3
// 5.551115123125783e-17

5.551115123125783e-17.toFixed(20)
// "0.00000000000000005551" //无限接近0

Number.EPSILON.toFixed(20)
// "0.00000000000000022204" //只要比这个数小,我们就当他是正确的


function withinErrorMargin (left, right) {
    return Math.abs(left - right) < Number.EPSILON;
}
console.log(withinErrorMargin(0.1 + 0.2, 0.3))
// true
console.log(withinErrorMargin(0.2 + 0.2, 0.3))
// false
安全整数和Number.isSafeInteger()

JavaScript能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。

console.log(Math.pow(2, 53)); // 9007199254740992
console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) + 1)//false
console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1) //true,等于一个比最大范围少于1的数

同理可鉴Number.MAX_SAFE_INTEGER

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

console.log(Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1)) // false
console.log(Number.isSafeInteger(Number.MIN_SAFE_INTEGER)) // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)) // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)) // false
Math对象的扩展 Math.trunc

Math.trunc方法用于去除一个数的小数部分,返回整数部分

console.log(Math.trunc(4.1)) // 4
console.log(Math.trunc(4.9)) // 4
console.log(Math.trunc(-4.1)) // -4
console.log(Math.trunc(-4.9)) // -4
console.log(Math.trunc(-0.1234)) // -0
Math.sign()

Math.sign方法用来判断一个数到底是正数、负数、还是零。

console.log(Math.sign(-5)) // -1
console.log(Math.sign(5)) // 1
console.log(Math.sign(0)) // 0
console.log(Math.sign(-0)) // -0
console.log(Math.sign(NaN)) // NaN
console.log(Math.sign("foo")); // NaN
console.log(Math.sign());      // NaN

参考引用:

es6数值扩展

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82000.html

相关文章

  • es6学习笔记-函数扩展_v1.0_byKL

    摘要:学习笔记函数扩展函数参数的默认值如果参数默认值是变量,那么参数就不是传值的,而是每次都重新计算默认值表达式的值。属性函数的属性,返回该函数的函数名。箭头函数详细链接参考引用函数扩展 es6学习笔记-函数扩展_v1.0 函数参数的默认值 function Point(x = 0, y = 0) { this.x = x; this.y = y; } var p = ne...

    yuanzhanghu 评论0 收藏0
  • es6学习笔记-let,const和块级作用域_v1.0_byKL

    摘要:考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。函数声明语句函数表达式循环循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。声明一个只读的常量。 es6学习笔记-let,const和块级作用域_v1.0 块级作用域 javascript 原来是没有块级作用域的,只有全局作用域和函数作用域 例子1 因为没有块级作用域,所以每次的i都是一...

    Youngdze 评论0 收藏0
  • es6学习笔记-变量析构_v1.0_byKL

    摘要:学习笔记变量析构允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。有一个属性用属性来获取字符串长度数值和布尔值的解构赋值解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。 es6学习笔记-变量析构_v1.0 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 如果解构失败,变量的值等于undefine...

    Aldous 评论0 收藏0
  • es6学习笔记-字符串扩展_v1.0_byKL

    摘要:学习笔记字符串的扩展字符的表示法允许使用的形式表示一个字符,但在之前,单个码点仅支持到,超出该范围的必须用双字节形式表示,否则会解析错误。返回布尔值,表示参数字符串是否在源字符串的头部。,是引入了字符串补全长度的功能。 es6学习笔记-字符串的扩展_v1.0 字符的Unicode表示法 JavaScript 允许使用uxxxx的形式表示一个字符,但在 ES6 之前,单个码点仅支持u00...

    JaysonWang 评论0 收藏0
  • es6学习笔记-字符串模板_v1.0_byKL

    摘要:学习笔记字符串模板实例模板编译先组成一个模板使用放置代码使用输出表达式。这被称为标签模板功能。该数组的成员与数组完全一致参考引用字符串扩展 es6学习笔记-字符串模板_v1.0 实例:模板编译 //先组成一个模板 var template = ` //使用放置JavaScript代码 //使用输出JavaScript表达式。 `; //这是编译模板的函数,将模...

    xiongzenghui 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<