相关文章推荐
很拉风的小狗  ·  React中如何在FileReader的on ...·  4 月前    · 
无聊的杨桃  ·  Excel ...·  3 月前    · 
淡定的松树  ·  Excel ...·  1 年前    · 
英勇无比的麦片  ·  山东大学自主设置科研机构管理办法-山东大学科 ...·  1 年前    · 
威武的灯泡  ·  广东工业大学超融合管理平台建设项目结果公告- ...·  2 年前    · 
从未表白的匕首  ·  由于:java.lang.NoSuchMet ...·  2 年前    · 
飘逸的火锅  ·  钢铁魔女op_哔哩哔哩_bilibili·  2 年前    · 
Code  ›  JS中将变量转为字符串开发者社区
string 字符串函数 js 变量
https://cloud.tencent.com/developer/article/1563184
不羁的电影票
3 年前
作者头像
Fundebug
0 篇文章

JS中将变量转为字符串

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Fundebug > JS中将变量转为字符串

JS中将变量转为字符串

作者头像
Fundebug
发布 于 2020-01-02 15:45:57
2K 0
发布 于 2020-01-02 15:45:57
举报

译者按: 语言的细枝末节了解一下就可以了,不需要太较真,不过如果一点也不知道的话,那就不太妙了。

  • 原文: Converting a value to string in JavaScript
  • 译者: Fundebug

本文采用意译,版权归原作者所有

对于 JavaScript,有 3 种不同方法可以将变量转换为字符串。这篇博客将详细介绍这些方法,并比较他们的优劣。

3 种方法

将变量转换为字符串的 3 种方法如下:

  1. value.toString()
  2. "" + value
  3. 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) 中定义了,但是并不能直接使用,因此称作内部函数。下面的表格显示了 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
 
推荐文章
很拉风的小狗  ·  React中如何在FileReader的onload回调中访问局部变量startInt
4 月前
无聊的杨桃  ·  Excel VBA技术问询:从单个单元格提取多值分配给多个变量
3 月前
淡定的松树  ·  Excel 添加复选框或选项按钮(表单控件)_excel添加复选按钮-CSDN博客
1 年前
英勇无比的麦片  ·  山东大学自主设置科研机构管理办法-山东大学科学技术研究院
1 年前
威武的灯泡  ·  广东工业大学超融合管理平台建设项目结果公告-广东省政府采购中心
2 年前
从未表白的匕首  ·  由于:java.lang.NoSuchMethodError: 'org.apache.kafka.common.KafkaFuture org.apache.kafka.clients.admin.
2 年前
飘逸的火锅  ·  钢铁魔女op_哔哩哔哩_bilibili
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号