浅析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 相关文章推荐
JS 面向对象的5钟写法
Jul 31 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
九种js弹出对话框的方法总结
Mar 12 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
Sep 23 Javascript
jquery验证邮箱格式并显示提交按钮
Nov 07 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
Mar 08 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
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中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
php中的静态变量的基本用法
2014/03/20 PHP
基于php判断客户端类型
2016/10/14 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
php实现头像上传预览功能
2017/04/27 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python函数的5种参数详解
2017/02/24 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
办公室文员工作职责
2014/01/31 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
党员活动总结
2015/02/04 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
文明礼仪倡议书
2015/04/28 职场文书
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA