时间:2021-05-18
前言
在几年前,当SpiderMonkey实现了严格模式的时候.我了解到,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果:
var sum = 015 + // 相当于十进制的13,而不是15 197 + 001; // 反正是1console.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能有所帮助。如果有疑问可以留言交流。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
整数十进制二进制以零为开头,后面接一个小写或大写的拉丁文字母B(0b或者是0B)八进制以0开头,然后是八进制数字序列(0-7),如果字面值中的数值超出范围,那么
1、二进制数、八进制数、十六进制数转十进制数有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制
二进制数10001110110转换成八进制是2166。二进制到八进制的转换方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位
与八进制数16.327等值的二进制数是(1110.011010111)2,每位8进制数对应一个3位二进制数,所以只要把每一位的8进制数转换成3位二进制数即可。
bindec()--二进制转换为十进制decbin()--十进制转换为二进制dechex()--十进制转换为十六进制decoct()--十进制转换为八进制hex