4 ms·
Here's the other thing that neither of the other commenters mentioned: You can't go around peppering your code with use of this new syntax if you want it to co
by carussell 11y ago
Here's the other thing that neither of the other commenters mentioned:
You can't go around peppering your code with use of this new syntax if you want it to continue working on older runtimes. With `Symbol`, you can at least create a polyfill that approximates what it's shooting for.
> declaring a Symbol
Don't think of it as "declaring a symbol" (because it isn't). Think of it as generating a symbol (because it is).
- hajile 11y agoES6 already adds a ton of new constructs that won't run on older browsers. Relying on symbols to be interned also won't work on older machines. A symbol-literal syntax like #symbol and #"spaced symbol" would make them far easier to use and increase their adoption. Who really wants to write map.add(new Symbol("foo"), 'bar') instead of map.add(#foo, 'bar')?
- ajuc 11y ago> Who really wants to write map.add(new Symbol("foo"), 'bar') instead of map.add(#foo, 'bar')? It makes it clear when you are generating new symbol, and when you are reusing existing symbol. var a = new Symbol("foo"); var b = new Symbol("foo"); map[a]="firstValue"; map[b]="secondValue"; Console.log(map[a] + " " + map[b]); // writes "firstValue secondValue" How does it work with your syntax? map[#foo]="firstValue"; map[#foo]="secondValue"; Console.log(map[#foo]); // what is written here?
- deleted 11y ago[deleted]
- masklinn 11y ago> Who really wants to write map.add(new Symbol("foo"), 'bar') Nobody because it's completely daft, and absolutely not equivalent to the second version, the equivalent to the second version is: map.add("foo", "bar")