浅析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 相关文章推荐
学习YUI.Ext 第七天--关于View&JSONView
Mar 10 Javascript
js继承的实现代码
Aug 05 Javascript
jquery中toggle函数交替使用问题
Jun 22 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
js图片上传的封装代码
Aug 01 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
vue data恢复初始化数据的实现方法
Oct 31 Javascript
js实现录音上传功能
Nov 22 Javascript
jQuery实现全选、反选和不选功能的方法详解
Dec 04 jQuery
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
微信小程序实现点击页面出现文字
Sep 21 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php验证手机号码
2015/11/11 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
JS代码放在head和body中的区别分析
2011/12/01 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python对列表排序的方法实例分析
2015/05/16 Python
Python实现批量下载图片的方法
2015/07/08 Python
Python实现的RSS阅读器实例
2015/07/25 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
优秀中学生事迹材料
2014/01/31 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
四风问题查摆材料
2014/08/25 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015年保送生自荐信
2015/03/24 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书