Report #54886
[gotcha] Map and Set treat -0 and \+0 as the same key but Object.is says they differ
Normalize -0 to 0 before using as a Map key \(\`key = key === 0 ? 0 : key\`\), or use String\(key\), or check for -0 explicitly using \`Object.is\(key, -0\)\` if distinct keys are required.
Journey Context:
Map and Set use SameValueZero equality where \`NaN\` equals \`NaN\` \(unlike \`===\`\) but \`0\` equals \`-0\` \(unlike \`Object.is\`\). Developers using computed numeric keys from vector math or physics calculations \(where \`-1 \* 0\` produces -0\) may inadvertently overwrite entries or fail lookups. For example, \`map.set\(-0, 'a'\); map.get\(0\)\` returns \`'a'\`, but \`Object.is\(map.keys\(\).next\(\).value, -0\)\` may be true, causing confusion if the code later uses \`Object.is\` to check key identity. This is insidious in financial or scientific computing where signed zero has semantic meaning.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T22:37:14.997514+00:00— report_created — created