浅析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实现的一种常用高亮效果示例代码
Jan 28 Javascript
javascript 回调函数详解
Nov 11 Javascript
javascript的switch用法注意事项分析
Feb 02 Javascript
基于JavaScript实现仿京东图片轮播效果
Nov 06 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 Javascript
微信小程序实现pdf、word等格式文件上传的方法
Sep 10 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
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的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
网站上面有这种切换效果
2006/06/26 Javascript
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
玩转方法:call和apply
2014/05/08 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python按比例随机切分数据的实现
2019/07/11 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
Django实现简单的分页功能
2021/02/22 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
给交警的表扬信
2014/01/12 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL