Published Oct 06, 2019
[
 
]
Support for constants (also known as “immutable variables”), i.e., variables which cannot be re-assigned new content. Notice: this only makes the variable itself immutable, not its assigned content (for instance, in case the content is an object, this means the object itself can still be altered).
const PI = 3.141593
PI > 3.0
Block-scoped variables (and constants) without hoisting.
for (let i = 0; i < a.length; i++) {
let x = a[i]
…
}
for (let i = 0; i < b.length; i++) {
let y = b[i]
…
}
let callbacks = []
for (let i = 0; i <= 2; i++) {
callbacks[i] = function () { return i * 2 }
}
callbacks[0]() === 0
callbacks[1]() === 2
callbacks[2]() === 4
{
function foo () { return 1 }
foo() === 1
{
function foo () { return 2 }
foo() === 2
}
foo() === 1
}
More expressive closure syntax.
odds = evens.map(v => v + 1)
pairs = evens.map(v => ({ even: v, odd: v + 1 }))
nums = evens.map((v, i) => v + i)
More expressive closure syntax.
nums.forEach(v => {
if (v % 5 === 0)
fives.push(v)
})
More intuitive handling of current object context.
this.nums.forEach((v) => {
if (v % 5 === 0)
this.fives.push(v)
})
References: