К сожалению, ответ @Matthew Flaschen (в настоящее время принятый) не работает с классом Symbol
из ES6 / ES2015:
console.log("" + Symbol("foo"));
// results in an exception:
// `Uncaught TypeError: Cannot convert a Symbol value to a string`
// (at least in Chrome as of this writing).
https://jsfiddle.net/L8adq9y4/
(понятия не имеюпочему, поскольку Symbol
имеет совершенно хороший метод toString()
:)
console.log(Symbol("foo").toString());
https://jsfiddle.net/v1rqfhru/
Хотя есть решение: функция String()
, по-видимому, может преобразовыватьлюбое значение (по крайней мере из тех, которые я пробовал) в String
.Он даже вызовет toString()
, если он существует:
console.log(String("A String"));
console.log(String(undefined));
console.log(String(null));
console.log(String({value: "An arbitrary object"}));
console.log(String({toString: function(){return "An object with a toString() method";}}));
console.log(String(function(){return "An arbitrary function"}));
https://jsfiddle.net/6uc83tsc/
Итак, передайте все, что вам нравится, в String()
, и вы получите довольно хороший результат.