blog

ES6

- トップ・レベルのthisはundefinedを指すので、トップ・レベルのコードでは使用しないでください。...

Apr 23, 2020 · 6 min. read

ES6

歴史

ECMAScriptとJavaScriptの関係は?

  • Netscape '96 が ECMA Standard 1.0 を提出
  • 従って、ECMA標準に続く既存のJS

ES6 ECMAScript2015との関係

  • ECMAScript 6 は ECMA5.1 の次の標準として最初に提案されました。
  • 実際のES6はいくつものバージョンが登場し、最終的に2015年のECMAScript 1025に落ち着きました。
  • つまり、ES6は

ストリクトモード

モジュラー開発、自動厳格モード

"use strict"

-変数は使用する前に宣言する必要があります。

- 関数は引数と同じ名前の属性を持つことはできません!

  • writeable:true/false 書き込み可能かどうか

- with文は使えません。

- 読み取り専用のプロパティに値を代入することはできません。

- 8進数には接頭辞0は使えません。

  • ストリクトモードの8進数は使用できません。

- 削除できない属性を削除するとエラーが発生します。

  • configurable:false

- プロパティを削除できるのはdelete global[prop]だけです。

- eval は外部スコープに変数を導入しません。

- evalと引数は再割り当てできません。

- 関数の引数の変更は自動的に反映されません。

- 引数は使えません。.callee

- 引数は使えません。.callee.caller

- トップレベルの thisは未定義を指すので、トップレベルのコードで thisを使うべきではありません。

- fn.callerとfn.argumentsを使って関数呼び出しのスタックを取得することはできません。

- 予約語の追加

letおよびconst

let

  • letで定義された変数は、現在のステートメント・ブロックにのみ属します。

  • varとletを混在させることができます。

  • 変数のリフティングはありません。

  • 一時的なデッドゾーン

    • var tmp = 123; if { tmp = 'abc'; // ReferenceError let tmp; }

const

  • 定数宣言

    • 定数の値を変更することはできません。
    • 定数は、値を代入せずに定義することはできません。
  • const obj は obj の参照アドレスが変わるのを防ぎます。

  • obj=nullは使えないので、ヒープに残り、破棄できないことに注意してください。

アロー関数

var f=v=>v

  • var fと同等=function(v){ return v

関数内にステートメントが1つしかなく、そのステートメントがreturnで返される場合は、{}を省略して

アロー関数の引数が1つの場合、括弧は省略できます。

引数がない場合、または複数の引数がある場合、括弧は省略できません。

矢印関数は、主に thisの方向を

  • 関数が矢印関数に変更されると、thisは現在の関数の外の thisを指すように変更されます。
  • 誰がクリックしたかはe.currentTargetでわかります。

上:オブジェクトの様々な機能方法

  • var obj={ a:function(){ // ES5 console.log("a") }, b(){ // ES6 console.log("b"); }, c:; } }

代入の分解

配列を分解して値を代入

  • let a=1,b=2,c=3
  • let [a,b,c]=[1,2,3]
  • 配列パースで最も重要なのはビット単位のパースです。

オブジェクトの解析

  • let {a,b}={a:5,b:6}
  • let obj = { p: [ 'Hello', { y: 'World' } ] };

let { p: [x, { y }] } = obj;

  • オブジェクトはプロパティ名で解決されます。
  • 名前が重複している場合は、別の名前を作成します。

は英語の -ity、-ism、-ization に対応します。

  • 関数は複数の解析された値を返します。
  • パラメータに初期値を設定することも可能です。
  • JSONデータの抽出

注意

  • パラメータを分解して割り当てた後は、ビットを飛ばすことができ、順番に書く必要はありません。
  • ロードされたオブジェクトからメソッドを分解し、グローバル関数を形成します。
  • 分解された課題には括弧を使わないようにしてください。

文字列拡張メソッド

文字のユニコード表現

  • "\u0061"

includes()

  • 文字列中に文字が存在するかどうかの判定

startsWith()

  • パラメータ文字列が元の文字列の先頭にあるかどうかを示します。
  • 2つのパラメータを使用する場合、2番目のパラメータは位置を示し、最初の位置が特定の開始位置であるかどうかを決定します。

endsWith()

  • パラメータ文字列が元の文字列の末尾にあるかどうかを示します。
  • 2つの引数については、 startsWith() を参照してください。

repeat()

  • 元の文字列が数回繰り返され、新しい文字列が返されることを示します。

padStart()

  • "F".padStat(2, "0")

    • 長さの指定が不十分な場合は、補数の前に、例えば、ここでFの長さが1である場合、2ビットを構成する必要があるので、0を追加する前に

padEnd()

  • "F".padEnd(2, "0")

テンプレート文字列

  • let n=3; console.log("a "+n+"b") これは不便な書き方なので、次のように書いてください。
  • let n=3; console.log(a${n}b) ここでの文字列は `` を使って内部で引用されていることに注意してください。

ラベルテンプレート

  • alert // alert(123)

Symbol

唯一無二の存在

通常の変数のシンボル

このタイプは主に定数定義に使用されます。

  • let a=Symbol("a"); let b=Symbol("a"); console.log(a===b);//false

オブジェクトのキーと値のペアのキーは、文字でも記号でもかまいません。

シンボルのキー名は上書きされません。

Setとマップ

Set

  • 特性

    • 非繰り返しリスト型
    • 非繰り返しリスト型
    • 秩序正しく、制御不能
    • 順序付き、制御なし
    • 重複要素はなく、トラバーサルは非常に高速ですが、キーと値のペアに比べると若干劣ります。
  • 新しいセット

    • let a=new Set()
  • let a=new Set()
  • 要素の追加
  • 要素の削除
  • 関数が
  • サイズ

    • size()

      • 長さ、長さはありません
  • アレイの重複排除

Map

  • 配列の重複除去

    • let arr=[1,2,3,1,2,3,1,2,3]; let sets=new Set(arr); arr=Array.from(sets); console.log(arr);
  • set(キー,値)

    • 要素の追加
  • set(key,value)

    • 要素の追加
  • delete(名前”)

    • キー名の削除
  • get(key)

    • 要素の取得
  • キー()

    • すべてのキーのリストを取得
  • サイズ

    • マップのメンバー数の取得
  • size

    • マップのメンバ数の取得
  • has(value)

    • 関数が
  • (エルゴード的

    • オブジェクトの反復処理

      • for(let obj of maps){ console.log(obj); }.
    • オブジェクトの反復処理

      • for(let obj of maps){ console.log(obj); }
    • プロパティ名の反復処理

      • for(let str of a2.keys()){ console.log(str); }
    • 値の反復処理

      • for(let value of a2.values()){ console.log(value); }
    • forEach

      • for(let item of a2.entries()){ console.log(item); }

弱い型

  • WeakSet WeakMap
  • a2.forEach(=>{console.log(v,k,list)})
  • WeakSet WeakMap
  • WeakMap に格納されるキーはオブジェクトでなければなりません。
  • 弱い参照関係 別のオブジェクトが削除されると、そのオブジェクトは解放されます。

Generatorsジェネレータ関数

書く

valueはyieldが返す結果です。

done は、関数が完了するかどうかです。

Read next

バージョン番号を比較する

質問に従って、'.各サブバージョン番号の2つのバージョンを分割し、左から右へ1つずつ比較する場合は、サブバージョン番号の数のバージョンは、他よりも、0サブバージョンとバージョンの少ないサブバージョンでは、常に2つのバージョンのすべてのサブバージョンを比較できるように。 サブバージョンを分割すると、配列に格納されているサブバージョンに分かれて、ダブルポインタを使用することができ、格納されている2つのバージョンの2つの別々のバージョンに分かれています...

Apr 23, 2020 · 2 min read