[译]ES6新特性:八进制和二进制整数字面量
2013-08-14 10:20
225 查看
原文:http://whereswalden.com/2013/08/12/micro-feature-from-es6-now-in-firefox-aurora-and-nightly-binary-and-octal-numbers/
几年前,当SpiderMonkey实现了严格模式的时候.我了解到,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果:
但是仍有一些开发者们需要八进制整数(尤其是那些Mozilla扩展开发者和node.js开发者),最常见的就是用在处理文件权限(755,644这些)的时候.因此,ES6又增加了一种新的八进制整数字面量写法.和十六进制的
另外,一些开发者们还需要二进制的整数字面量写法,这种写法ECMAScript从来没有支持过.ES6支持了这种写法,和八进制以及十六进制类似,使用0b或0B前缀:
目前Firefox Aurora已经实现了这两个语法,如果你更富有冒险精神,还可以使用更新的Firefox Nightly.
几年前,当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的八进制与二进制整数字面量
- 数字进制转换(二进制、八进制、十进制、十六进制)
- python3之数字(在实际应用中的数字--十六进制、八进制和二进制记数)
- ES6-数值的扩展-二进制和八进制表示法
- ES6新特性学习笔记—数字、数组、字符串
- 二进制 ,十六进制,八进制
- 二进制、八进制、十六进制 转为 十进制
- linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
- JS十进制,十六进制,八进制,二进制他们的转换总结
- 二进制、八进制、十进制、十六进制
- 二进制,八进制,十进制,十六进制相互转化
- 数字转换为二进制
- linux-shell 脚本转换 十六进制 十进制 八进制 二进制
- 关于二进制、八进制、十六进制的计算和转换(Binary-Octal-Hex)
- 前端工程师不得不知道的ES6新特性(四)
- React ES6新特性
- ES6新特性三: Generator(生成器)函数详解
- ES6新特性 let、const、变量对象的解构赋值
- 二进制 十进制 八进制 十六进制 互转 原码、反码、补码、
- es6常用特性学习总结