浅析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 相关文章推荐
jquery动态更换设置背景图的方法
Mar 25 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
Apr 02 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
浅谈jQuery为哪般去掉了浏览器检测
Aug 29 Javascript
微信小程序 animation API详解及实例代码
Oct 08 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
从零开始最小实现react服务器渲染详解
Jan 26 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
vue配置font-awesome5的方法步骤
Jan 27 Javascript
微信小程序云开发之数据库操作
May 18 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
PHP中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python使用建议技巧分享(三)
2020/08/18 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
Python中生成ndarray实例讲解
2021/02/22 Python
建筑工程管理专业自荐信范文
2013/12/28 职场文书
小学后勤管理制度
2014/01/14 职场文书
医学类个人求职信范文
2014/02/05 职场文书
装饰活动策划方案
2014/02/11 职场文书
学校食堂标语
2014/10/06 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
感谢信模板大全
2015/01/23 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
学习党章心得体会2016
2016/01/15 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
MySQL复制问题的三个参数分析
2021/04/07 MySQL