Chapter 7. Built-in Improvements in ES6
Thus far in the book, we’ve discussed entirely new language syntax, such as property value shorthands, arrow functions, destructuring, or generators; and entirely new built-ins, such as WeakMap
, Proxy
, or Symbol
. This chapter, on the other hand, is mostly devoted to existing built-ins that were improved in ES6. These improvements consist mostly of new instance methods, properties, and utility methods.
7.1 Numbers
ES6 introduces numeric literal representations for binary and octal numbers.
7.1.1 Binary and Octal Literals
Before ES6, your best bet when it comes to binary representation of integers was to just pass them to parseInt
with a radix of 2
.
parseInt
(
'101'
,
2
)
// <- 5
You can now use the new 0b
prefix to represent binary integer literals. You could also use the 0B
prefix, with a capital B
. The two notations are equivalent.
console
.
log
(
0b000
)
// <- 0
console
.
log
(
0b001
)
// <- 1
console
.
log
(
0b010
)
// <- 2
console
.
log
(
0b011
)
// <- 3
console
.
log
(
0b100
)
// <- 4
console
.
log
(
0b101
)
// <- 5
console
.
log
(
0b110
)
// <- 6
console
.
log
(
0b111
)
// <- 7
In ES3, parseInt
interpreted strings of digits starting with a 0
as an octal value. That meant things got weird quickly when you forgot to specify a radix of 10
. As a result, specifying the radix of 10
became a best practice, so that user input like 012
wouldn’t unexpectedly be parsed as the integer 10
.
console
.
log
(
parseInt
(
'01'
))
// <- 1
console
.
log
(
parseInt
(
'012'
))
// <- 10
console
.
log
(
parseInt
(
Get Practical Modern JavaScript now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.