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


Posted in Javascript onAugust 30, 2016

前言

在几年前,当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 的方法重载效果
Aug 07 Javascript
JavaScript中的style.display属性操作
Mar 27 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
微信小程序实现的日期午别医生排班表功能示例
Jan 09 Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 Javascript
Javascript通过控制类名更改样式
May 24 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
vue 扩展现有组件的操作
Aug 14 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 #Javascript
jQuery simpleModal插件的使用介绍
Aug 30 #Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 #Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 #Javascript
浅谈javascript中的Function和Arguments
Aug 30 #Javascript
javascript 中的console.log和弹出窗口alert
Aug 30 #Javascript
Laravel中常见的错误与解决方法小结
Aug 30 #Javascript
You might like
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP中16个高危函数整理
2019/09/19 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
js实现点赞效果
2020/03/16 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
详解Django中Request对象的相关用法
2015/07/17 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
公务员个人自我评价分享
2013/11/06 职场文书
客房主管岗位职责
2013/12/09 职场文书
2014年采购员工作总结
2014/11/18 职场文书
颐和园的导游词
2015/01/30 职场文书
同意离婚答辩状
2015/05/22 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python