creates a new symbol (check via typeof)
const symbolType = Symbol.for('symbol name');
assert.equal(symbolType, 'symbol');stores the symbol in a runtime-wide registry and retrieves it from there
const sym = Symbol.for('new symbol');
const sym1 = Symbol.for('new symbol1');
assert.equal(sym, sym1);is different to Symbol() which creates a symbol every time and does not store it
var globalSymbol = Symbol.for('new symbol');
var localSymbol = Symbol.for('new symbol');
assert.notEqual(globalSymbol, localSymbol);
.toString() on a Symbol
also contains the key given to Symbol.for()
const description = Symbol('').toString();
assert.equal(description, 'Symbol(new symbol)');
NOTE: the description of two different symbols
might be the same
const symbol1AsString = Symbol('new symbol 1').toString();
const symbol2AsString = Symbol.for('new symbol').toString();
assert.equal(symbol1AsString, symbol2AsString);but the symbols are not the same!
const symbol1 = Symbol.for('new symbol');
const symbol2 = Symbol.for('new symbol');
assert.notEqual(symbol1, symbol2);