Why Symbol('test').toString()
works well, but I can't use '' + Symbol('test')
?
It will throw Error:
cannot convert a Symbol value to a string
Why does the implicit type conversion not work? Why is the code not equal to '' + Symbol('test').toString()
?
According to ECMA-262, using the addition operator on a value of type Symbol in combination with a string value first calls the internal ToPrimitive, which returns the symbol. It then calls the internal ToString which, for Symbols, will throw a TypeError exception.
So calling the internal ToString is not the same as calling Symbol.prototype.toString.
So I guess the answer to:
is "because the spec says so".
your type not string
you can check, Symbol is a new type in ES6
https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol
You can, your just not meant to do it by accident.