tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

NaN-as-key.js (914B)


      1 /*
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/licenses/publicdomain/
      4 */
      5 
      6 // All NaNs must be treated as identical keys for Set.
      7 
      8 // Avoid constant-folding that would happen were |undefined| to be used.
      9 var key = -/a/g.missingProperty;
     10 
     11 var s = new Set();
     12 s.add(key, 17);
     13 assertEq(s.has(key), true);
     14 assertEq(s.has(-key), true);
     15 assertEq(s.has(NaN), true);
     16 
     17 s.delete(-key);
     18 assertEq(s.has(key), false);
     19 assertEq(s.has(-key), false);
     20 assertEq(s.has(NaN), false);
     21 
     22 s.add(-key, 17);
     23 assertEq(s.has(key), true);
     24 assertEq(s.has(-key), true);
     25 assertEq(s.has(NaN), true);
     26 
     27 s.delete(NaN);
     28 assertEq(s.has(key), false);
     29 assertEq(s.has(-key), false);
     30 assertEq(s.has(NaN), false);
     31 
     32 s.add(NaN, 17);
     33 assertEq(s.has(key), true);
     34 assertEq(s.has(-key), true);
     35 assertEq(s.has(NaN), true);
     36 
     37 s.delete(key);
     38 assertEq(s.has(key), false);
     39 assertEq(s.has(-key), false);
     40 assertEq(s.has(NaN), false);