了解在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将值转换为字符串。而且这里真的没有强制发生。因此,您了解可用的所有工具。然后你可以决定使用什么工具而不是根据具体情况使用