JS.next

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

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

概要

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


m = new Map
m.set(0, 'positive zero')

m.get(-0)  // "positive zero"


基本的に「===」でtrueとなる値がキーとして同じとみなされる。
但しNaNのみ例外で、NaNとNaNはキーとして同じとみなされる。

s = new Set
s.add(NaN)

s.has(NaN)  // true


変更が加えられたバージョン

V8 3.24.26-??? 3.29.9.1-