ECMAScript

【JavaScript】 学習のためECMAScript2020を日本語訳してみました

更新日:2020/12/14

 

経緯

僕は2年ほど前からJavaScriptでプログラムを作成し始めました。

JavaScriptは業務等で今まで使用してきた言語といろいろな意味で異なります。
不思議ちゃんな言語に戸惑いつつも、何とか実用レベルまで身に着けることができたと同時に、どうせなら気が付いたことを記事にしようと思ったのが、このサイトを始める切っ掛けです。

しかしこれまでの僕のJavaScriptの知識は、ネットで他の人が投稿している記事を断片的に拾い集めたものでしかありませんでした。
そのため、自分の記事として公開するには裏付けをして、間違いがないことを確認することが必要です。

そこでJavaScriptの実質的な仕様書であるECMAScriptを読むことにしました。

しかしECMAScriptは英語なうえに文字数が膨大です。
これを全て読むのは、非常に時間がかかります。
ほぼ趣味で始めたサイトにそこまで時間をかけるわけにはいかないため、必要なところだけを読んで自分の記事の裏付けをしていました。
ただし、膨大なテキストから拾い上げているわけですから、本当にそれが自分が探している答えなのかわからないことも多いのが現状でした。

そんな折、2020年です。
外出自粛などの影響を受けて、本職がかなり暇になりました。
どうせなら一週間ぐらい時間をとってECMAScriptを一から読み、どうせなら日本語訳しておくことにしたのです。

 

サイトURL

■ECMAScript2020言語仕様 私的日本語訳
https://ecmascript2020言語仕様.com/

注意点

上記サイトはECMAScript2020を僕の学習のために日本語訳したものです。
当初一週間で終わる予定でしたが、記事として体裁を整えるだけで実質4か月かかっており、最終的なチェックができていません。
そのため、誤訳や誤字があります。
順次チェックしていく予定ですが、正確な情報を知りたい場合は原文をご覧ください。

注意点2

JavaScript初心者の方は、まずは入門書から始めることをお勧めします。
ECMAScriptはブラウザ等への実装向けに書かれていおり、非常に難解な内容が含まれています。
プログラムコード作成には不要な記述が多いです。

実務でプログラムをしている方は、暇なときに読んでおくといいかもしれません。

 

ECMAScript2020の概要

ECMAScript2020の各章の概要をまとめておきます。

  • 前書き(Introduction)

    ECMAScriptが制定されてからの流れと、ECMAScript2020で新たに導入された機能について概略が述べられています。

  • 1 適用範囲(Scope)

    仕様の適用範囲が述べられています。

  • 2 実装に関する準拠基準(Conformance)

    仕様を元に作成した実装プログラムで、注意すべき点が述べられています。

  • 3 規範的な参考文献(Normative References)

    仕様と関連する文献が挙げられています。

  • 4 概要(Overview)

    仕様の概要です。
    各用語について簡潔に述べられています。
    プロトタイプチェーンについて、ここで説明しています。

  • 5 表記規則(Notational Conventions)

    仕様内のアルゴリズムやプロダクションの記述ルールについて述べられています。
    プログラマー視点で読んでいると、コードの記述について書かれているような気がしてきますが、あくまで仕様内での話です。

  • 6 ECMAScriptのデータ型と値(ECMAScript Data Types and Values)

    プロラムで使用する型と、仕様内で使用する型が説明されています。
    二つの違いを意識して仕様を読む必要があります。

  • 7 抽象操作(Abstract Operations)

    暗黙的な型変換や比較操作、オブジェクト操作などの内部的なアルゴリズムを説明しています。
    ※プログラムコードから呼び出す関数の説明ではありません。

  • 8 実行可能コードと実行コンテキスト(Executable Code and Execution Contexts)

    レキシカル環境と、それに関連する内部アルゴリズムが説明されています。
    関数内部から外部の変数を参照する仕組みが含まれます。

  • 9 通常およびエキゾチックなオブジェクトの動作(Ordinary and Exotic Objects Behaviours)

    オブジェクトと、それに関連する内部アルゴリズムについて説明されています。
    またArrayなどの特殊なオブジェクトについても説明されています。

  • 10 ECMAScript言語:ソースコード(ECMAScript Language: Source Code)

    ソースコードの読み込み時の処理についての説明です。
    内部的な文字コードがUTF-16であることも説明されています。
    strictモードの説明もあります。

  • 11 ECMAScript言語:レキシカル文法(ECMAScript Language: Lexical Grammar)

    ソースコードの文法についての説明です。
    ただしJavaScript初心者向けではありません。
    ECMAScriptをブラウザなどに組み込む実装者向けの内容です。

    セミコロンの自動挿入についても説明されています

  • 12 ECMAScript言語:式(ECMAScript Language: Expressions)

    変数や代入、計算式、比較などの式の内部アルゴリズムについて説明されています。

  • 13 ECMAScript言語:ステートメントと宣言(ECMAScript Language: Statements and Declarations)

    ブロック({…})やif文などの文の内部アルゴリズムについて説明されています。

  • 14 ECMAScript言語:関数とクラス(ECMAScript Language: Functions and Classes)

    関数やアロー関数、ジェネレーター関数、クラスの内部アルゴリズムについて説明されています。

  • 15 ECMAScript言語:スクリプトとモジュール(ECMAScript Language: Scripts and Modules)

    文の集まり(スクリプト)とimport・exportに関連する文(モジュール)の内部アルゴリズムについて説明されています。

  • 16 エラー処理と言語拡張(Error Handling and Language Extensions)

    実装内部でのエラー処理について説明されています。

  • 17 ECMAScript標準組み込みオブジェクト(ECMAScript Standard Built-in Objects)

    組み込みオブジェクトの概要について説明されています。

  • 18 グローバルオブジェクト(The Global Object)

    グローバルオブジェクトと、それが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 19 主要なオブジェクト(Fundamental Objects)

    主要なオブジェクト(Object、Function、Boolean、Symbol、Error)と、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 20 数値と番号と日付(Numbers and Dates)

    数値や日付のオブジェクト(Number、BigInt、Math、Date)と、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 21 テキスト処理(Text Processing)

    テキストに関するオブジェクト(String、RegExp)と、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 22 インデックスコレクション(Indexed Collections)

    インデックスに関するオブジェクト(Array、TypedArray)と、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 23 キーコレクション(Keyed Collections)

    キーに関するオブジェクト(Map、Set、WeakMap、WeakSet)と、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 24 構造化データ(Structured Data)

    構造化データに関するオブジェクト(ArrayBuffer、SharedArrayBuffer、DataView、Atomics、JSON)と、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 25 コントロール抽象化オブジェクト(Control Abstraction Objects)

    イテレーターやプロミスに関するオブジェクトと、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 26 リフレクション(Reflection)

    リフレクションに関するオブジェクトと、それぞれが持っているプロパティおよび内部アルゴリズムについて説明されています。

  • 27 メモリモデル(Memory Model)

    メモリの内部管理に関するレコード仕様と内部アルゴリズムについて説明されています。

更新日:2020/12/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。