178 lines
2.1 KiB
Markdown
178 lines
2.1 KiB
Markdown
# Features
|
|
|
|
## Array comprehension
|
|
|
|
```javascript
|
|
[for (i of [1, 2, 3]) i * i]; // [1, 4, 9]
|
|
```
|
|
|
|
## Async functions
|
|
|
|
```javascript
|
|
async function chainAnimationsAsync(elem, animations) {
|
|
for (var anim of animations) {
|
|
await anim(elem);
|
|
}
|
|
}
|
|
```
|
|
|
|
## Arrow functions
|
|
|
|
```javascript
|
|
arr.map(x => x * x);
|
|
```
|
|
|
|
## Let scoping
|
|
|
|
```javascript
|
|
for (let i in arr) {
|
|
let v = arr[i];
|
|
}
|
|
```
|
|
|
|
## Classes
|
|
|
|
```javascript
|
|
class Foo extends Bar {
|
|
constructor() { }
|
|
|
|
foo() { }
|
|
|
|
get bar() { }
|
|
|
|
set bar() { }
|
|
}
|
|
```
|
|
|
|
## Computed property names
|
|
|
|
```javascript
|
|
var foo = "foo";
|
|
var bar = "bar";
|
|
var obj = {
|
|
["foo" + bar]: "heh",
|
|
["bar" + foo]: "noo",
|
|
foo: "foo",
|
|
bar: "bar"
|
|
};
|
|
```
|
|
|
|
## Constants
|
|
|
|
```javascript
|
|
const MULTIPLIER = 5;
|
|
console.log(2 * MULTIPLIER);
|
|
|
|
MULTIPLIER = 6; // error
|
|
var MULTIPLIER; // error
|
|
```
|
|
|
|
## Default parameters
|
|
|
|
```javascript
|
|
function foo(bar = "foo") {
|
|
return bar + "bar";
|
|
}
|
|
```
|
|
|
|
## Destructuring
|
|
|
|
```javascript
|
|
var [a, [b], c, d] = ["hello", [", ", "junk"], ["world"]];
|
|
console.log(a + b + c); // hello, world
|
|
```
|
|
|
|
## For-of
|
|
|
|
```javascript
|
|
for (var i of [1, 2, 3]) {
|
|
console.log(i * i);
|
|
}
|
|
```
|
|
|
|
## Generators
|
|
|
|
```javascript
|
|
```
|
|
|
|
## Generator comprehension
|
|
|
|
```javascript
|
|
```
|
|
|
|
## Modules
|
|
|
|
```javascript
|
|
```
|
|
|
|
## Numeric literals
|
|
|
|
```javascript
|
|
0b111110111 === 503; // true
|
|
0o767 === 503; // true
|
|
```
|
|
|
|
## Property method assignment
|
|
|
|
```javascript
|
|
var obj = {
|
|
foo() {
|
|
return "foobar";
|
|
},
|
|
|
|
get bar() {
|
|
return this._bar;
|
|
},
|
|
|
|
set bar(val) {
|
|
this._bar = val;
|
|
}
|
|
};
|
|
```
|
|
|
|
## Property name shorthand
|
|
|
|
```javascript
|
|
function f(x, y) {
|
|
return { x, y };
|
|
}
|
|
```
|
|
|
|
## Rest parameters
|
|
|
|
```javascript
|
|
function printList(name, ...items) {
|
|
console.log("list %s has the following items", name);
|
|
items.forEach(function (item) {
|
|
console.log(item);
|
|
});
|
|
}
|
|
```
|
|
|
|
## Spread
|
|
|
|
```javascript
|
|
function add(x, y) {
|
|
return x + y;
|
|
}
|
|
|
|
var numbers = [5, 10];
|
|
add(...numbers); // 15
|
|
```
|
|
|
|
## Template literals
|
|
|
|
```javascript
|
|
var x = 5;
|
|
var y = 10;
|
|
console.log(`${x} + ${y} = ${x + y}`); // "5 + 10 = 15"
|
|
```
|
|
|
|
## Unicode regex
|
|
|
|
```javascript
|
|
var string = 'foo💩bar';
|
|
var match = string.match(/foo(.)bar/u);
|
|
console.log(match[1]);
|
|
```
|