技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

【メモ】ECMAScript 仕様輪読会 第25回

esspec.connpass.com

概要

tc39.es

ECMA Script 2023 の仕様書ガチ読みしようぜ☆
という輪読会。

ECMAScript 仕様輪読会 - YouTube

今回は、そのうち Construct 辺りを読もうとしたところで、一旦方針を変えた会でした。
曰く「コンストラクタ読む前にクラス定義からまず読まないと分からなくね?」とのこと。

tc39.es

リンク系

ざっくり内容

GitHub - es-meta/esmeta: ECMAScript Specification (ECMA-262) Metalanguage にてシンプルなクラス定義をパースし、仕様書と照らし合わせて実行し、追いかけながら仕様書を読んでいきます。
その内容は Youtube で公開されていて、以下の Youtube で参照することが出来ます。

www.youtube.com

言語仕様…と言うかランタイムの処理を仕様に合わせて読んでいくと、実は「えっ!?」というようなものが幾つか見つかりました。
深いところを読んでいくので、言語の裏みたいなものが見えてくる…

  1. クラス名の衝突確認を行う処理があるが、この中で Nan/Identifir/undefined などが存在する。
    でもこれはグローバルでしか検証しないので、別スコープならこの名前でクラス宣言できる。
  2. 同じレキシカルスコープで、var は同じ名前で何度も宣言できる。
    しかし、let/const は宣言時の処理系が異なるので、同名を宣言するとエラーになる。
  3. class Hoge {} と宣言したとき、内部仕様的には let Hoge = class {}; と同等の扱いで処理してる。
    だから let Hoge = class {}; Hoge = 1; などが通る。

色々刺激になりますね。隔週で次は 12/20 に開催するとのこと。
面白いので次回も参加しよっとw