JavaScriptが出た時はブラウザでしか実行できなくて、MicrosoftのVisual Basicとよく似てて簡単だなぁって思ってましたが、今ではNodeJS等バックエンドでも動作し、インタラクティブなAngular、React、VueやElectronなどもあり、更にバージョンの進化も早く、今では多様な事をこなせる言語になっていますね。 C++に近づいておりJavaScriptも難解になってきています。
JavaScriptの生い立ち
JavaScriptはNetscape社が開発し1996年にJavaScript1.0を出しましたが、1997年からECMA(European Computer Manufacturers Association)が標準化を進め、ECMAScript(ECMA-262)となった。 その後、ECMA Internationalになり欧州だけでなく国際標準となった。
ECMAScript2022 (ES13)
- Top level await
- class フィールド宣言 constructor(){}内でthis.name =’ichiri’としなくてもよくなった
- プライベート宣言 変数やメソッドの先頭に#を付けるとprivateとなる
- static classで初期化用の式(equation)はclass外部で処理していたが、class内で処理できるようになった
- #brand in obj instanceの親classの確認正確化
- 正規表現 /…/d
- try catchのエラーチェーン {cause:e} e.cause これからは、throw new Error()の中には、必ずエラーメッセージと{cause:e}の両方を入れる必要がある。
- at(-n) ---Pythonみたい
- Object.hasOwn(object, property)
ECMAScript2021 (ES12)
- 論理代入演算子 ||=, &&~, ??=
- 数値セパレータ 1_000_000, 0b_1110_1001, 0x_abcd_123f
- string.replaceAll()
- Promise.any()
- 弱参照 WeakRefs
ECMAScript2020 (ES11)
- BitInt
- for in の順序保証
- null合体演算子 ??
- オプショナル連結 ?
- globalThis
- string.matchAll()
- Dynamic Inport
- export * as ns from module 構文
- import.meta
- Promise.allSettled()
ECMAScript2018 (ES9)
- テンプレート文字列強化 \u
- オブジェクトスプレッドとレスト構文 …obj
- 正規表現のフラグ /…/s
- 正規表現の名前付きキャプチャーグループ ?<…>
- 正規表現の前方マッチ ?<=… , ?<!…
- 正規表現のUnicodeプロパティマッチ \p{…}
- Promise の finally()
- Promiseのfor await … of …
ECMAScript2017 (ES8)
- オブジェクト参照 object.values(), object.entries()
- パディング string.padStart(), string.padEnd()
- プロパティ記述し参照 object.getOwnPropertyDescriptors()
- 関数末尾のカンマ , ?????
- async, await
- 共有メモリ —>meltdown and Spectre対応として全てのブラウザで一時無効化
ECMAScript2016 (ES7)
- array.includes()
- べき乗演算子 **
ECMAScript2015(ES6)
- class
- let, const
- モジュール import, export —それまではrequire
- アロー関数
- 関数の初期値引数 func1(var1=10, var2=1)
- 関数の可変長引数 func1(…arg)={}
- スプレッド構文 …arg
- Mapオブジェクト
- Setオブジェクト
- 配列関数 from(), of()
- 型付配列 Unit8Array etc
- for ~ of
- シンボルオブジェクト(Symbol)
- 文字列でバッククオート(変数を入れる事ができる)
- 8進数 0o、2進数 0b
- Promise
- 言語依存フォーマット NumberFormat()
- IE11ではES6以降は使えない
ECMAScript 5.1th Edition(ES5.1)
- array.isArray()
ECMAScript 5th Edition(ES5)
- strict モード
- getter, setter
- JSON.stringify(object), JSON.parse(string)
- 最後のオブジェクトの末尾のカンマ
- trim()
- Objectのメソッド強化?
- Arrayのメソッド強化?
ECMAScript 4th Edition(ES4)
ECMAScript 3rd Edition(ES3) —1999/12
TypeScript
MicrosoftがJavaScriptのSuperset(上位互換)として開発したAlternative JavaScript(AltJS)。 静的型付けけやinterfaceなどの定義で可読性・デバッグ性を向上したもの。 静的型付けができるので、Web Asssemblyに変換して高速実行も可能。 近年はJavaScriptから学習し、TypeScriptに移行する人が増加中。 JavaScriptが大好きでNodeJSの開発者Ryan Dahlさんが、NodeJSの後悔から新たに開発したDenoもTypeScriptが中心で、Ryan DahlさんもTypeScripを絶賛。
- 静的型付け
- type, interfaceなどオブジェクトの型付け
- ジェネリクス
- private, public, protect, readOnly
最近のライブラリやアプリはTypeScriptのものが多く、ソースコードを読み解き様々なヒントにするにもJavaScriptプログラマはTypeScriptを学ぶ方が良いと思います。
コメント