海南新闻网

JS中将值转换成字符串的5种方法

90fcbc33d4e14ef49d1741936766ebc6

如果您订阅Airbnb的JavaScript样式指南,您将知道最好的方法是使用'String()'

我使用他是因为它是最清楚的,方便其他人理解你的代码的意图

请记住,最好的代码不需要聪明的方法,但可以将代码理解传达给其他人

Const值=12345;

//Concat空字符串

价值+'';

//模板字符串

`$ {值}`;

//JSON.stringify

JSON.stringify(值);

//toString()

value.toString();

//String()

字符串(值);

//结果

//'12345'

比较这5种方法

让我们用不同的值测试这5种方法。以下是我们要测试的值:

Const string='hello';

常数=123;

Const boolean=true;

Const数组=[1,'2',3];

Const对象={one: 1};

Const symbolValue=符号('123');

Const undefinedValue=undefined;

Const nullValue=null;

拼接空字符串

String +''; //'你好'

数字+''; //'123'

布尔+''; //'真'

数组+''; //'1,2,3'

对象+''; //'[object Object]'

undefinedValue +''; //'undefined'

nullValue +''; //'null'

symbolValue +''; //类型错误

从中可以看出,如果值为symbol,则此方法将抛出TypeError错误,除了另一个将输出正确的值

模板字符串

`$ {字符串}`; //'你好'

`$ {数}`; //'123'

`$ {布尔}`; //'真'

`$ {阵列}`; //'1,2,3'

`$ {对象}`; //'[object Object]'

`$ {undefinedValue}`; //'undefined'

`$ {NullValue属性}`; //'null'

`$ {symbolValue}`; //?类型错误

实际上,使用模板字符串和拼接字符串与输出结果相同。同样,在处理Symbol时,这不是最理想的方式,因为它会抛出TypeError

TypeError:无法将Symbol值转换为字符串

类型错误:无法将Symbol类型的值转换为字符串

JSON.stringify()

JSON.stringify(字符串); //''你好''

JSON.stringify(数); //'123'

JSON.stringify(布尔值); //'真'

JSON.stringify(数组); //'[1,'2',3]'

JSON.stringify(对象); //'{'one': 1}'

JSON.stringify(NullValue属性); //'null'

JSON.stringify(symbolValue); //未定义

JSON.stringify(undefinedValue); //未定义

复制代码

您通常不使用JSON.stringify将值转换为字符串,并且它实际上并未在此处强制执行。我主要通过这种方式让你知道所有可用的工具,然后你可以根据具体情况选择。哪种方式

有一点我想指出,因为你可能不会注意,当你使用纯字符串格式的值转换它将包装引号

阅读更多Kyle Simpson的“你不知道JS”: JSON Stringification

理解基本原则的重要性

您可能已经注意到我的代码注释经常引用Kyle的书。我从中学到了很多东西。我不是来自计算机科学背景。我缺乏许多基本概念。他的书让我意识到它对基础知识的重要性。对于那些想要成为高级工程师的人来说,真正理解基本原则是提高水平的好方法,否则很难改进。你终于知道问题所在,但如果你了解基础知识,你知道为什么你知道如何解决它。总之,强烈推荐这个系列给那些想成为高级程序员的人!

的toString()

string.toString(); //'你好'

number.toString(); //'123'

boolean.toString(); //'真'

与Array.toString(); //'1,2,3'

object.toString(); //'[object Object]'

symbolValue.toString(); //'符号(123)'

undefinedValue.toString(); //?类型错误

nullValue.toString(); //?类型错误

因此对比度留给toString和String,toString也执行得很好,必须注意在undefined和null下会抛出异常。

串()

串(字符串); //'你好'

串(数字); //'123'

字符串(布尔值); //'真'

串(数组); //'1,2,3'

串(对象); //'[object Object]'

串(symbolValue); //'符号(123)'

串(undefinedValue); //'undefined'

串(NullValue属性); //'null'

最后,我们找到了冠军

您可以看到String()非常好地处理undefined和null,并且不会抛出任何异常。记住我经常说的,你最了解你的程序,所以你应该选择最适合你的程序。

在展示了所有不同方法如何处理不同类型的值之后,我希望您能够意识到这些差异并知道下次处理它们时如何使用它们。如果你不确认,String()是最好的选择