Es 6コア特性学習

1644 ワード

1.変数宣言
varの代わりにconstとletを使用
2.ブロックレベルの役割ドメイン
変数は現在のブロックレベルの役割ドメインでのみ有効になり、他の役割ドメインには影響しません.
{
    let tmp='';
}

3.テンプレート{}
4.矢印式()パラメータがない場合に加算()=>{}index=>{}1つ以上のパラメータを加算しなくてもよい()=>{}
5.for of
const arr = ['a','b','c'];
for(const elem of arr){
    console.log(elem);
}

6.デフォルトのパラメータ
function (x=0,y=0){
    ...
}
function ({x=0,y=-1}){

}
//     

function (...args){
    for (const elem of args){
        console.log(elem);
    }
}

Math.max.apply(Math, [-1, 5, 11, 3]) 
=》
Math.max(...[-1, 5, 11, 3])

arr1.push.apply(arr1, arr2);
=》
arr1.push(...arr2);

console.log(arr1.concat(arr2, arr3));
=》
console.log([...arr1, ...arr2, ...arr3]);

オブジェクトの字面量はfunction()を省略しています.
var obj = {
    foo:{
        ...
    },
    bar:{
        this.foo();
    },
}

クラス#クラス#
functionは省略されており、各部にカンマは不要です
class Person(){
    constructor(name){
        this.name = name;
    }
    describe(){
        return 'Person called' + this.name;
    }
}

複数エクスポート
//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main1.js ------
import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5

//------ main2.js ------
import * as lib from 'lib'; // (A)
console.log(lib.square(11)); // 121
console.log(lib.diag(4, 3)); // 5