ES 2019(ES 10)


一、JSON superset
ECMA-272文法をJSONオーバーセットに拡張します.
動機
  • ECMAScriptはJSONがサブセットJSON.parseであると主張していますが、それは正しくありません.JSON文字列は転送されていないU+2028 LINE SEPARTORとU+2029 PAAGRAPH SEPAATOR文字を含んでいます.ECMAScript文字列は
  • ではいけません.
    二、Optional catch binding
    ECMAScriptに対して文法の変更を行い、catchにerrorを書かずに捕獲することができます.
    動機
  • この提案によって導入された構文変更は、catchがその周囲の括弧を紐付けする
  • を省略することを可能にする.
    原本の書き方
    try {
      //            Web  
    } catch (unused) {
      //          web    
    }
    後でこのように書いてもいいです.
    try {
      // do something
    } catch {
      //
    }
    三、Symbol.prototype.description
    Symbol.prototype.description方法を追加しました.読み取り専用の属性で、Symbolオブジェクトの任意記述の文字列を返します.
    デモ
    console.log(Symbol('desc').description); // expected output: "desc"
    
    console.log(Symbol.iterator.description); // expected output: "Symbol.iterator"
    
    console.log(Symbol.for('foo').description); // expected output: "foo"
    
    console.log(Symbol('foo').description + 'bar'); // expected output: "foobar"
    四、Funtions.prototype.toString revision
    Function.prototype.toStringメソッドを追加し、現在の関数ソースコードを表す文字列を返します.
    1.文法
    function.toString()
    2.demo
    const fun = (name) => { console.log(name) }
    fun.toString() // "(name) => { console.log(name) }"
    五、Object.from Enties――キーの値をリストに変換するために使用されます.
    Object.from Enties属性を追加して、キーの値をリストに対してオブジェクト1に変換します.構文
    const newObject = Object.fromEntries(iterable);
    iterable:同様に、反復可能プロトコルArayまたはMapまたは他のオブジェクトを実装する反復可能なオブジェクト
    2.demo
    const newObject = Object.fromEntries([['a', 1], ['b', 2]]); // { a: 1, b: 2 }
    const map = new Map().set('a', 1).set('b', 2);
    const newObject1 = Object.fromEntries(map); // { a: 1, b: 2 }
    六、Well-formed JSON.stringify
    JSON.strigifyがフォーマットエラーのUnicode文字列に戻るのを防ぐための提案
    七、String.prototype.{trimStart,trimEnd}
    String.prototype.trimStartとString.prototype.trimEnd属性を追加して、空白文字を削除して、新しい文字列を返します.
    String.prototype.trimStart 1.文法
    str.trimStart();
    2.demo
    const str = '           ';
    const newStr = str.trimStart(); // '        '
    String.prototype.trimEnd 1.文法
    str.trimEnd();
    2.demo
    const str = '           ';
    const newStr = str.trimEnd(); // '       '
    八、Aray.prototype.{flat,flatMap}
    Aray.prototype.flatとAray.prototype.flatMapの属性を追加して、配列の内に配列を展開して新しい配列に戻ります.
    Aray.prototype.flat
    !参考資料1.文法
    const newArray = arr.flat(depth)
    depth:内層配列を展開したい層数は、デフォルトでは1です.
    2.demo
  • は、内層配列
  • を展開する.
    /**     : */
    const array = [1, [2, [3]]];
    const array1 = array.flat(); // [1, 2, [3]]
    /**     ,            : */
    const arrayInfinity = array.flat(Infinity); // [1, 2, 3]
    /**       */
    const array2 = array.flat(2);
  • 空のアイテムを除去する
  • const array = [1, 2, , 3];
    const arrayRemove = array.flat(); // [1, 2, 3]
    Aray.prototype.flatMap Array.prototype.map, ( )1.文法
    const new_array = arr.flatMap((currentValue, index, array) => {
        //         
    })
    currentValue:配列中に処理されている現在の要素
    index:要素の索引を処理しています.
    array:処理されているグループです.
    2.demo
    const array = [1, 2, 3];
    const new_array = array.flatMap(ele => [ele * 2]) // [2, 4, 6]
    const new_array2 = array.flatMap(ele => [[ele * 2]]) // [[2], [4], [6]]
    ギターブ上で修正