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)// <- 0console.log(0b001)// <- 1console.log(0b010)// <- 2console.log(0b011)// <- 3console.log(0b100)// <- 4console.log(0b101)// <- 5console.log(0b110)// <- 6console.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'))// <- 1console.log(parseInt('012'))// <- 10console.log(parseInt(
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access