🎄

ENCA 15日目: typeof の implementation-defined を削除

2024/12/16に公開

typeof の implementation-defined を削除

歴史的経緯から typeof の結果に implementation-defined が含まれていました。

Type of val Result
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol "symbol"
Object (ordinary and does not implement [[Call]]) "object"
Object (standard exotic and does not implement [[Call]]) "object"
Object (implements [[Call]]) "function"
Object (non-standard exotic and does not implement [[Call]]) Implementation-defined. Must not be "undefined", "boolean", "function", "number", "symbol", or "string".

そして実際に Internet Explorer 10 で "unknown" を返すオブジェクトが存在しました。

https://github.com/tc39/ecma262/issues/1440

今となってはこの仕様は不要であるということで、2019年3月にこの implementation-defined を取り除く変更が承認されました。

https://github.com/tc39/ecma262/pull/1441

Discussion