[ydkjsy]Get Started-1-What Is JavaScript?


js学習
文章

What's With That Name?


Javaプログラマーの注目を集めるため、当時流行していた「Script」という言葉はJavaScriptと名付けられていましたが、実はJava社のOracleはすでにこの商標を持っているので、ここに「JS」または「ECMAScript」または改訂年を付けて「ES 2019」と呼ぶことにしました.

Language Specification


TC 39:JS管理の技術操作委員会、正式な規格管理.
ECMA:TC 39の投票結果を標準組織としてここに提出し、正式化する.
TC 39は5段階(0から4)を経てspecを決定し、TC 39のメンバーの考えやメンバーの擁護だけが0段階に入る.最終4段階で通過すれば、来年の改正に入る資格がある.
JSの公式基準はTC 39、ECMADの1つの基準しかありません.

The Web Rules Everything About(JS)


JSで絶対無視できる環境はWebです.specで定義されているJSは、ブラウザベースのJSエンジンで実行されているJSと同じですが、いくつかの違いがあります.
新しい仕様が以前のプログラムを破損させる可能性がある場合は、エンジンが受け入れない可能性があるため、変更を可能にする必要があります.あるいはspecを決定した後、web上でしか使用できない例外を作成します.

Not All (Web) JS...


JS環境はプログラムのグローバル範囲に特定の機能を持つAPIを追加する.(alert、つまりJS specではありません.)
Web APIはfetch(..), getCurrentLocation(..), getUserMedia(..)である.ノードJSは、組み込みモジュールから数百のAPIメソッドにアクセスすることを可能にする.( fs.write(..) )
不思議なことにconsole.*度です

It's Not Always JS


ツールはツールです.

Many Faces


JSはマルチサンプルです.

Backwards & Forwards


後方互換性言語が変化しても、既存のコードは有効です.利用可能なユーザーやWebサイトに比べて、プログラムがクラッシュする回数が少ない場合、投票で変更されることもありますが、このような状況は多くありません.JSはこちらです.
forwards互換性(親互換性)は、新機能を加えてもうまく機能します.HTML CSSはこちら

Jumping the Gaps


古い文法だけでなく、最新の文法を使って変換します.代表的なBabel

Filling the Gaps


上記の互換性の問題で最新のAPIメソッドに関連している場合は、APIメソッドが基本的に定義されているように定義を追加します.このパターンを充填と呼ぶ.
たとえば、finallyメソッドが存在しないためにエラーが発生した場合は、次のように追加します.
if (!Promise.prototype.finally) {
    Promise.prototype.finally = function f(fn){
        return this.then(
            function t(v){
                return Promise.resolve( fn() )
                    .then(function t(){
                        return v;
                    });
            },
            function c(e){
                return Promise.resolve( fn() )
                    .then(function t(){
                        throw e;
                    });
            }
        );
    };
}
これはただの例で、上記のように書くのではなく、正式なpolyfillコレクションES-SCAMを使用するなど、実際にはbabelのようなtranspilerでコードに必要なpolyfillを自動的に検出して追加します.明確な説明が必要な場合は、上記の方法を使用してください.

What's in an Interpretation?


言語配置バイナリ表現のプログラムをコンパイルし、JSはソースコードを配置する.ただし、デプロイタイプは関係ありません.さらに重要なのは、エラーをどのように処理するかです.
スクリプト/interpret言語は、エラーが発生する前に正常に動作します.通常、実行中にエラーが発生します.

逆に、構文エラーなどの無効なコマンドがある場合、解析中(つまり、実行前にエラーが検出されて実行されない)は、パケット言語は実行されません.JSはこれに近い.

JSは.

1.transpiledからbabelまで、webpackでパッケージ化され、JSエンジンを非常に異なる形式で使用します.
2. parsed to AST
3.AST to binary intermediate representation(IR)、そしてJITコンパイラ.
4.JS仮想マシンはプログラムを実行する.

Strictly Speaking


strict modeは、コンパイル時に発生する可能性のあるエラーを予防します.その他のモード制御は、実行時にのみ使用できます.(グローバルオブジェクトではなくthisの場合?)
各ファイルはモードを設定でき、whitespaceやコメント以外は何も書けません.
"use strict";
各関数は可能ですが、ファイルに設定されていない場合は可能です.