这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战。
前言
ECMAScript 6.0 简称ES6 , 是 JavaScript 语言的新一代的标准,于在 2015 年 6 月发布,正式名称就是《ECMAScript 2015 标准》。一般情况,泛指, 5.1版以后的标准,涵盖了 ES2015、ES2016、ES2017、ES2018、ES2019、ES2020、ES2021 等等
我们一起来学习
- 2进制表示
- 8进制表示
- 16进制表示
- 数值分割符号
先练习一下
console.log(0b10001)
console.log(0B10001)
console.log(021);
console.log(0o21);
console.log(0O21)
console.log(17);
console.log(0x11);
console.log(1_7);
console.log(17n);
等
等
等
等
答案:
console.log(0b10001) // 17 ES6 二进制写法
console.log(0B10001) // 17 ES6 二进制写法
console.log(021); // 17 八进制写法
console.log(0o21); // 17 ES6 八进制写法
console.log(0O21); // 17 ES6 八进制写法
console.log(17); // 17 十进制
console.log(0x11); // 17 十六进制
console.log(0X11); // 17 十六进制
console.log(1_7); // 17 数值分隔符写法
console.log(17n); // 17n BigInt
这里分别有二进制,八进制,十进制,十六进制**四种进制** 八种写法, 我们一起来看看吧。
0b(0B) 开头 二进制写法
以ob或者oB开头,表示二进制写法,实际打印输出的时候,是10进制的值。
获取二进制,当然也很简单:
17..toString(2) // '10001'
0o(0O) 或者 0开头 八进制写法
以oo,oO或者0开头,表示八进制写法。
获取二进制,当然也很简单:
17..toString(8) // '21'
大家可还记得字符表示,可以使用8进制?
"\141" // 'a'
怎么获得这个值呢? 也很简单:
"a".codePointAt(0).toString(8) // '141'
唯一需要注意的一点就是严格模式下, 0开头表示8进制,会报错。
function logStrict(){
"use strict"
console.log(021);
}
// Uncaught SyntaxError: Octal literals are not allowed in strict mode.
function log(){
console.log(021);
}
我在最新的chrome浏览器下测试, 其报错并不是执行阶段,语法解析阶段就报错了。
0x(0X) 开头 十六进制写法
以ox,oX开头,表示十六进制写法。
十六进制我们可不少见,字符里面非常常见:
var regZH = /[\u4e00-\u9fa5]/g; // 正则
' a '.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '') // 正则
a::before { content: "\20020:"; }
.bg { color: #FFF } // 颜色
怎么获得这个值呢? 也很简单:
"a".codePointAt(0).toString(16) // '61'
数值分隔符
下划线(_)作为分隔符, 可以理解为占位符。 小数部分也可, 不限于10进制,其他进制也可用。
1_0 // 10
1_0.1_0 // 10.1
0b1_0 // 2
一个很有用的用途,就是让数字好读, 比如最经典的千分位,也就是这个作用
1_000_000_000 // 很好读
注意事项:
- 不能放在数值的最前面(leading)或最后面(trailing)。
_101
// VM8290:1 Uncaught ReferenceError: _101 is not defined
101_
// Uncaught SyntaxError: Numeric separators are not allowed at the end of numeric literals
- 不能两个或两个以上的分隔符连在一起。
1__1
// Uncaught SyntaxError: Only one underscore is allowed as numeric separator
- 小数点的前后不能有分隔符。
1_.01
// Uncaught SyntaxError: Numeric separators are not allowed at the end of numeric literals
1._01
// Uncaught SyntaxError: Invalid or unexpected token
- 科学计数法里面,表示指数的
e或E前后不能有分隔符。
1_e2
// Uncaught SyntaxError: Numeric separators are not allowed at the end of numeric literals
1e_2
// Uncaught SyntaxError: Invalid or unexpected token
- 不能紧跟着进制的前缀
0b、0B、0o、00O、0x、0X
0b_100
// Uncaught SyntaxError: Invalid or unexpected token
0_10
// Uncaught SyntaxError: Numeric separator can not be used after leading 0.
小结
今天你收获了吗?