浅析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实现图片广告轮换效果代码
Jul 07 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
Feb 16 Javascript
JavaScript实现点击文字切换登录窗口的方法
May 11 Javascript
jQuery实现图片渐入渐出切换展示效果
Aug 15 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
Nov 09 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
vue下载excel的实现代码后台用post方法
May 10 Javascript
Vue响应式原理Observer、Dep、Watcher理解
Jun 06 Javascript
解析JS在获取当前月的最后一天遇到的坑
Aug 30 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将整数数字转换为罗马数字实例分享
2019/03/17 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
jQuery版仿Path菜单效果
2011/12/15 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
完善的jquery处理机制
2016/02/21 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
vue实现购物车功能(商品分类)
2020/04/20 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
Python3实现连接SQLite数据库的方法
2014/08/23 Python
Python中的ceil()方法使用教程
2015/05/14 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
职工代表大会主持词
2014/04/01 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
关于安全的标语
2014/06/10 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
舞出我人生观后感
2015/06/16 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript