博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译]ES6新特性:八进制和二进制整数字面量
阅读量:6404 次
发布时间:2019-06-23

本文共 844 字,大约阅读时间需要 2 分钟。

原文:


几年前,当SpiderMonkey实现了严格模式的时候.我,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果:

var sum = 015 +  // 相当于十进制的13,而不是15          197 +          001;   // 反正是1console.log(sum) // 相加得到的和是211,而不是新手认为的213

但是仍有一些开发者们需要八进制整数(尤其是那些Mozilla扩展开发者和node.js开发者),最常见的就是用在处理文件权限(755,644这些)的时候.因此,ES6又增加了一种新的八进制整数字面量写法.和十六进制的0x0X类似,新的八进制整数使用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;

目前已经实现了这两个语法,如果你更富有冒险精神,还可以使用更新的.

转载地址:http://asjea.baihongyu.com/

你可能感兴趣的文章
dbutils java_Java篇-DBUtils与连接池
查看>>
java 文件crc校验_一个获取文件crc32校验码的简洁的java类 | 学步园
查看>>
java flatmapfunction_Java8 Stream flatmap中间操作用法解析
查看>>
java rmi spring 4.0_Java Spring RMI一些尝试
查看>>
JAVA怎么连接华为的HDFS系统_JAVA-API操作HDFS文件系统(HDFS核心类FileSystem的使用)...
查看>>
java牛客网四则运算_数据库刷题—牛客网(51-61)
查看>>
Java get set6_JDK6的新特性(转)
查看>>
java发送邮件 不登陆_Java邮件到Exchange Server“不支持登录方法”
查看>>
编程学习初体验(5. 如何自学编程)(2)
查看>>
思科ISR G1与ISR G1C的区别
查看>>
利用perl提取web配置文件中的域名对应的路径
查看>>
Centos5上安装JRE和LUMAQQ
查看>>
关于监控工具的主动发起性能测试
查看>>
插入模块时sys_init_module报错
查看>>
win7下删除文件关联 图标改回默认
查看>>
Linux 下安装tomcat8
查看>>
CentOS5.5 默认基本服务详解
查看>>
html加载视频文件的方法
查看>>
Apache安装及虚机配置
查看>>
项目沟通管理和干系人管理
查看>>