首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么决定了javascript类型转换的顺序?

什么决定了javascript类型转换的顺序?
EN

Stack Overflow用户
提问于 2018-10-28 02:19:09
回答 2查看 75关注 0票数 0

假设一个简单的样本

代码语言:javascript
复制
let a = [] + [];

在这种情况下,两个[]都被转换为空字符串,因此结果a也是空字符串。

现在,举个例子,

代码语言:javascript
复制
let a = null + "";

这会将a强制为"null"

从上面两个示例可以看出,+操作符似乎将参数转换为字符串(否则null + ""应该返回0)。

但如果我们这么做了

代码语言:javascript
复制
let a = null + null;

a的值应该是空的,但实际上是空的,所以我的问题是让a= "nullnull" +“”;类型在JS中的顺序是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-10-28 02:24:29

null + "“返回" null”,因为null会转换为字符串。

在第二个示例中,它不会转换为字符串,因为它不是必需的(该赋值中没有涉及字符串)

相反,null被转换为一个数字(即0),因此a=0+0

类型胁迫的顺序由括号或从左到右定义。

代码语言:javascript
复制
e.g 
1) "" + null + null // "nullnull"
2) "" + (null + null) // "0"
3)  null + null + "x" // "0x"
4) "x" + null + null // "xnullnull"
票数 0
EN

Stack Overflow用户

发布于 2018-10-28 02:26:26

如果表达式中的任何操作数可转换为字符串,则+运算符将执行字符串连接(并将所有其他操作数转换为字符串)。如果没有可转换为字符串的操作数,则+运算符将执行数字加法。

在第一个示例中,空数组是一个空数组,并且可以转换为字符串,因此[] + []会生成""。就像您这样做一样,[1, 2] + [3, 4]会给您"1,23,4",因为将数组转换为string会生成一个逗号分隔的元素列表。

第二个包含空字符串和null的示例是以这种方式工作的,因为表达式中有一个字符串,因此所有其他操作数(在本例中为null)都会转换为字符串。

添加两个null的第三个示例是0,因为表达式没有可转换为字符串的操作数,所以发生了数字加法,并且由于将null转换为数字会产生0,因此0+0=0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53024959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档