了解在JavaScript中将值转换为字符串的5种方法
如果您关注Airbnb的样式指南,首选方法是使用“String()”
它也是我使用的那个,因为它是最明确的-让其他人轻松地遵循你的代码的意图
请记住,最好的代码不一定是最聪明的方式,它是最能将代码理解传达给他人的代码
constvalue=12345; //ConcatEmptyString value+''; //TemplateStrings `${value}`; //JSON.stringify JSON.stringify(value); //toString() value.toString(); //String() String(value); //RESULT //'12345'
比较5种方式
好吧,让我们用不同的值测试5种方式。以下是我们要对其进行测试的变量:
conststring="hello"; constnumber=123; constboolean=true; constarray=[1,"2",3]; constobject={one:1}; constsymbolValue=Symbol('123'); constundefinedValue=undefined; constnullValue=null;
结合空字符串
string+'';//'hello' number+'';//'123' boolean+'';//'true' array+'';//'1,2,3' object+'';//'[objectObject]' undefinedValue+'';//'undefined' nullValue+'';//'null' //⚠ symbolValue+'';//TypeError
从这里,您可以看到如果值为一个Symbol,此方法将抛出TypeError。否则,一切看起来都不错。
模板字符串
`${string}`;//'hello' `${number}`;//'123' `${boolean}`;//'true' `${array}`;//'1,2,3' `${object}`;//'[objectObject]' `${undefinedValue}`;//'undefined' `${nullValue}`;//'null' //⚠ `${symbolValue}`;//TypeError
使用模版字符串的结果与结合空字符串的结果基本相同。同样,这可能不是理想的处理方式,因为Symbol它会抛出一个TypeError。
如果你很好奇,那就是TypeError:TypeError:CannotconvertaSymbolvaluetoastring
JSON.stringify()
//⚠ JSON.stringify(string);//'"hello"' JSON.stringify(number);//'123' JSON.stringify(boolean);//'true' JSON.stringify(array);//'[1,"2",3]' JSON.stringify(object);//'{"one":1}' JSON.stringify(nullValue);//'null' JSON.stringify(symbolValue);//undefined JSON.stringify(undefinedValue);//undefined
因此,您通常不会使用JSON.stringify将值转换为字符串。而且这里真的没有强制发生。因此,您了解可用的所有工具。然后你可以决定使用什么工具而不是根据具体情况使用