假设一个简单的样本
let a = [] + [];
在这种情况下,两个[]
都被转换为空字符串,因此结果a
也是空字符串。
现在,举个例子,
let a = null + "";
这会将a强制为"null"
。
从上面两个示例可以看出,+操作符似乎将参数转换为字符串(否则null + ""
应该返回0)。
但如果我们这么做了
let a = null + null;
a
的值应该是空的,但实际上是空的,所以我的问题是让a= "nullnull"
+“”;类型在JS中的顺序是什么?
发布于 2018-10-28 02:24:29
null + "“返回" null”,因为null会转换为字符串。
在第二个示例中,它不会转换为字符串,因为它不是必需的(该赋值中没有涉及字符串)
相反,null被转换为一个数字(即0),因此a=0+0
类型胁迫的顺序由括号或从左到右定义。
e.g
1) "" + null + null // "nullnull"
2) "" + (null + null) // "0"
3) null + null + "x" // "0x"
4) "x" + null + null // "xnullnull"
发布于 2018-10-28 02:26:26
如果表达式中的任何操作数可转换为字符串,则+运算符将执行字符串连接(并将所有其他操作数转换为字符串)。如果没有可转换为字符串的操作数,则+运算符将执行数字加法。
在第一个示例中,空数组是一个空数组,并且可以转换为字符串,因此[] + []
会生成""
。就像您这样做一样,[1, 2] + [3, 4]
会给您"1,23,4"
,因为将数组转换为string会生成一个逗号分隔的元素列表。
第二个包含空字符串和null的示例是以这种方式工作的,因为表达式中有一个字符串,因此所有其他操作数(在本例中为null)都会转换为字符串。
添加两个null的第三个示例是0,因为表达式没有可转换为字符串的操作数,所以发生了数字加法,并且由于将null转换为数字会产生0,因此0+0=0。
https://stackoverflow.com/questions/53024959
复制相似问题