Javascript中将变量转换为字符串的三种方法
前言
大家应该都知道,对于JavaScript,有3种不同方法可以将变量转换为字符串。这篇文章将详细介绍这些方法,并比较他们的优劣。狼蚁网站SEO优化话不多说了,来一起看看详细的介绍吧。
3种方法
将变量转换为字符串的3种方法如下
value.toString()
"" + value
String(value)
当value为null或者undefined时,第1种方法就不行了。而方法2和方法3基本上是一样的。
""+value:
将value与空字符串相加,即可将其转换为字符串。这种方法其实是一种稍微晦涩的技巧,可能会让别人难于理解开发者的意图。不过,这一点见仁见智,有些人偏爱这种方法。
String(value): 这种方法非常清晰使用String()
函数将value转换为字符串。不过,String()
有两种不同用法,容易混淆,尤其对于Java开发者来说。当String()
和运算符new一起作为构造函数使用时,它返回一个新创建的String对象;当不用new运算符调用String()
时,它只把value转换成原始的字符串。这两者是非常不同的
> String("Fundebug") === new String("Fundebug") false > typeof String("Fundebug") 'string' > String("Fundebug") instanceof String false > typeof new String("Fundebug") 'object' > new String("Fundebug") instanceof String true
事实上,将String()
作为构造函数使用并不常见,仅使用它来转换字符串就好了。
“”+value与String(value)的细微差别
""+value
与String(value)
都可以将value转换为字符串,它们是如何做到的呢?事实上,它们虽然结果相同,方法稍有区别。
将primitive基本类型转换为字符串
两种方法都使用内部函数ToString()
将primitive基本类型转换为字符串。ToString()
函数在ECMAScript 5.1 (§9.8)中定义了,并不能直接使用,称作内部函数。狼蚁网站SEO优化的表格显示了ToString()
函数如何将primitive基本类型转换为字符串
参数 | 结果 |
---|---|
undefined | "undefined" |
null | "null" |
Boolean | "true"或者 "false" |
Number | 将数字转换为字符串,例如 "1.765" |
String | 无需转换 |
将Object转换为字符串
转换为字符串之前,两种方法都会先将Object转换为primitive。不同的是,""+value使用内部函数ToPrimitive(Number)
(除了date类型),而String(value)
使用内部函数ToPrimitive(String)
。
ToPrimitive(Number)
: 先调用obj.valueOf
,若结果为primitive则返回;否则再调用obj.toString()
,若结果为primitive则返回;否则返回TypeError。ToPrimitive(String)
: 与ToPrimitive(Number)
类似,只是先调用obj.toString()
,后调用obj.valueOf()
。
可以通过以下示例了解区别,obj如下
var obj = { valueOf: function() { console.log("valueOf"); return {}; }, toString: function() { console.log("toString"); return {}; } };
调用结果:
> "" + obj valueOf toString TypeError: Cannot convert object to primitive value > String(obj) toString valueOf TypeError: Cannot convert object to primitive value
它们的结果相同
""+value
与String(value)
虽然不同,我们很少能感觉到。因为,大多数object使用默认的valueOf()
,它返回对象本身
> var x = {} > x.valueOf() === x true
由于valueOf()
返回值并非primitive,ToPrimitive(Number)
会跳过valueOf()
,而返回toString()
的返回值。这样,与ToPrimitive(String)
的返回值就一样了。
当object是Boolean、Number或者String实例时,valueOf()
将返回primitive。这就意味着两者的计算过程是这样的
ToPrimitive(Number)
valueOf()
返回primitive值,然后使用ToString()
转换为字符串。ToPrimitive(String)
:toString()
通过ToString()
函数将primitive值转换为字符串。
可知,虽然计算过程不同,它们的结果是一样的。
结论
那么你该选择哪种方法呢?如果你可以确保value值不是null和undefined,那么不妨使用value.toString()
。否则,你只能使用""+value
和String(value)
,它们基本上是一样的。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对狼蚁SEO的支持。
参考
原文:
译者:
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程