加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

ES6+ 数值扩展教程

发布时间:2023-03-24 08:46:06 所属栏目:教程 来源:
导读:ES6 对数值进行了大的改版,在向下兼容的同时,把所有的数值方法由全局移植到了 Number 对象下,在数组和字符串中也做了类似的操作,这样的主要目的是精简全局方法,更加明确的表达方法的含义。另外,ES6 还增加了二
ES6 对数值进行了大的改版,在向下兼容的同时,把所有的数值方法由全局移植到了 Number 对象下,在数组和字符串中也做了类似的操作,这样的主要目的是精简全局方法,更加明确的表达方法的含义。另外,ES6 还增加了二进制和八进制的表示方法,并增加了很多数值处理的方法,本节就来看看 ES6 对数值的扩展。

JavaScript 的 Number 对象是经过封装的,能让你处理数字值的对象, Number 对象由 Number() 构造器创建。

在非构造器上下文中,也就是没有 new 操作符时,Number 可以类型转换的函数使用。 接收一个参数,并将这个参数转换为数字,如果参数无法被转换为数字,则返回 NaN。

Number('10')                 // 10
Number('imooc')             // NaN
Number('')                    // 0
Number()                        // 0
Number(undefined)        // NaN
上面的代码中,在没有字符串或者是空字符串的时候,会得到数字 0,还有参数是 null 时得到的结果也是 0。但是,当参数为 undefined 时则会得到 NaN。

在 ES5 中,如 parseFloat、parseInt 等都是全局方法,在 ES6 中把处理数值的一些方法都移植到了 Number 对象上了。

parseInt('123');                // 123
Number.parseInt('123');    // 123
上面的代码可以看到,Number 对象下也有 parseInt 的方法,并且所有的数值方法在 Number 上也是一一对应的,功能基本相同,有些方法还做了扩展。在后面的小节中我们会对 Number 上的方法和全局的方法进行对比,看它们有什么不同,ES6 又解决了什么问题。

ES6 提供了二进制和八进制数值表示的新写法,分别用前缀 0b(或 0B)和 0o(或 0O)表示。对应的十六进制我们知道用 0x 作为前缀来表示的。下面我们来看看二进制和八进制是怎么表示的。

// es6 2进制 0B 开头
console.log('B',);     // 503
console.log('B',);     // 相同,0B 和 0b 都可以
// es6 8进制 0o 开头
console.log();     // 503
console.log();     // 相同,0o 和 0O 都可以
上面的代码分别使用了二进制和八进制对数字 503 进行了表示,那下面我们来验证一下:

 ===  // true
 ===          // true
上面的代码中使用了全等的方式进行判断,很明显,ES6 是支持这种方式的表示的。

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

// 非严格模式
(function(){
  console.log( === );    // true
})()
// 严格模式
(function(){
  'use strict';
  console.log( === );
})()
// Uncaught SyntaxError: Octal literals are not allowed in strict mode.
将 0b 和 0o 前缀的字符串数值转为十进制,可以把 Number 对象直接作为方法使用。

Number('0b111')  // 7
Number('0o10')   // 8

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章