浅析ES6的八进制与二进制整数字面量

 更新时间:2016年08月30日 17:40:39   作者:紫云飞  
这篇文章给大家介绍了ES6特性中的八进制和二进制整数字面量,介绍的挺不错的现在分享给大家,有需要的可以参考借鉴。

前言

在几年前,当SpiderMonkey实现了严格模式的时候.我了解到,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果:

var sum = 015 + // 相当于十进制的13,而不是15
     197 +
     001;  // 反正是1
console.log(sum) // 相加得到的和是211,而不是新手认为的213

但是仍有一些开发者们需要八进制整数(尤其是那些Mozilla扩展开发者和node.js开发者),最常见的就是用在处理文件权限(755,644这些)的时候.因此,ES6又增加了一种新的八进制整数字面量写法.和十六进制的0x或0X类似,新的八进制整数使用0o或0O作为前导标识,后面跟若干个八进制的数字字符(0到7),这种写法就不会再困扰新手了:

var DEFAULT_PERMS = 0o644; // 严格模式下也可用

值得注意的一点是,0O前缀的可读性太差了(0和大写的O长的太像了,很难区分),我在esdiscuss上提出了这个问题,希望能禁用掉大写的0O前缀,不过TC39目前的决定还是认为一致性应该大于可读性(一致性指的是要和0X以及0B等一致).我认为这个决定是值得商榷的,我推荐你永远不要使用大写的0O.

另外,一些开发者们还需要二进制的整数字面量写法,这种写法ECMAScript从来没有支持过.ES6支持了这种写法,和八进制以及十六进制类似,使用0b或0B前缀:

var FLT_SIGNBIT = 0b10000000000000000000000000000000;
var FLT_EXPONENT = 0b01111111100000000000000000000000;
var FLT_MANTISSA = 0b00000000011111111111111111111111;

目前Firefox Aurora已经实现了这两个语法,如果你更富有冒险精神,还可以使用更新的Firefox Nightly.

总结

以上就是这篇文章的全部内容,希望本文的内容对大家学习ES6能有所帮助。如果有疑问可以留言交流。

相关文章

  • javascript 保存文件到本地实现方法

    javascript 保存文件到本地实现方法

    本文将提供两种方式保存图片,大家可以根据喜欢自由选择
    2012-11-11
  • BootStrap 附加导航组件

    BootStrap 附加导航组件

    Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架,主要基于 HTML、CSS、JAVASCRIPT 的。接下来通过本文给大家介绍BootStrap 附加导航组件的知识,感兴趣的朋友一起学习吧
    2016-07-07
  • js实现新浪微博首页效果

    js实现新浪微博首页效果

    现在微博都有一个不错的效果就是会实时的动态滚动并显示最新的信息了,下面我来给大家介绍仿新浪微博大厅首页滚动效果,希望此方法对大家会有帮助。
    2015-10-10
  • js 判断一个数字是不是2的n次方幂的实例

    js 判断一个数字是不是2的n次方幂的实例

    下面小编就为大家分享一篇js 判断一个数字是不是2的n次方幂的实例,具有很好的参考价值,希望对大家有所帮助
    2017-11-11
  • JavaScript中常用的3种弹窗(警告框、确认框、提示框)

    JavaScript中常用的3种弹窗(警告框、确认框、提示框)

    JavaScript提供了几种常用的弹窗方法,用于与用户进行交互或显示提示消息,这篇文章主要给大家介绍了关于JavaScript中常用的3种弹窗的相关资料,分别包括警告框、确认框、提示框,需要的朋友可以参考下
    2023-09-09
  • JS浅拷贝和深拷贝原理与实现方法分析

    JS浅拷贝和深拷贝原理与实现方法分析

    这篇文章主要介绍了JS浅拷贝和深拷贝原理与实现方法,结合实例形式分析了javascript浅拷贝及深拷贝相关概念、原理、实现方法与操作注意事项,需要的朋友可以参考下
    2019-02-02
  • stats.js使用性能监控源码解读

    stats.js使用性能监控源码解读

    这篇文章主要为大家介绍了stats.js使用性能监控源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 微信小程序实现点击导航条切换页面

    微信小程序实现点击导航条切换页面

    这篇文章主要为大家详细介绍了微信小程序实现点击导航条切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • javascript实现tab切换特效

    javascript实现tab切换特效

    这篇文章主要介绍了javascript实现tab切换特效,实现的方法很简单,特别适合初学者学习javascript实现tab切换特效,tab切换再也不是问题,需要的朋友可以参考下
    2015-11-11
  • js+audio实现音乐播放器

    js+audio实现音乐播放器

    这篇文章主要为大家详细介绍了js+audio实现音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09

最新评论