JS.next

JavaScriptの最新実装情報を追うブログ

実装更新

Map、Setが正しく実装された

概要 今までV8ではMap、Setコンストラクタの引数付きの呼び出しが正しく実装されていなかったが、この度正しく実装された。 引数にイテラブル(=@@iteratorメソッドを持つ)オブジェクトを渡すことで、それを元に初期化させることができる。

for文でのlet変数が毎ループ新スコープを持つようになった

概要 かつてはfor文初期化句で宣言された変数は、for文の直前で宣言されたように振舞っていたが、各ループでスコープを引きづらないように仕様が変更され、V8も追従した。

Weak Collectionsがデフォルトで有効になった

概要 ES2015で導入される機能である、Promise、WeakMap、WeakSetコンストラクタがデフォルトで有効になった。

MapとSetが+0と-0を区別しなくなった

概要 MapやSetとは、キーにあらゆる型のあらゆる値を使えるコレクションである。 かつてはキーとして+0と-0を区別していたのだが、区別しないことになり、V8の実装も追従した。

String.prototype.{startsWith,endsWith,includes} が正規表現を受け付けなくなった

概要 これらは文字列を期待するメソッドだが、splitの用に正規表現も受け付けると思われて解決しづらいバグの元になってしまわないように、正規表現オブジェクトが渡された時は専用のエラーを出すことになり、V8の実装も追従した。

ArrayIteratorがインデックスを数値型で返すようになった

変更点 タイトルの通り 影響 一部のArrayIteratorを返すメソッド Array.prototype.keys Array.prototype.entries