JavaScript中 char 前面的加号是否会将其转换为数字?
1 + + "1" === 2;
+"1" + + "1" === 2;
"1" + "1" === "11"
之前的问题只是告诉我们如何将字符串转换为数字以及反之,但并没有解释为什么会发生这种情况。
JavaScript中 char 前面的加号是否会将其转换为数字?
1 + + "1" === 2;
+"1" + + "1" === 2;
"1" + "1" === "11"
之前的问题只是告诉我们如何将字符串转换为数字以及反之,但并没有解释为什么会发生这种情况。
1 + + "1" === 2;
一元运算符+
的优先级更高,因此+"1"
将首先被计算,将"1"
转换为值为1的整数,因此它将变成
1+1 === 2
第二行
+"1" + + "1" === 2;
+
的优先级更高,因此两个+"1"
都将被计算为正整数值1。"1" + "1" === "11"
+
也是字符串连接运算符,这将连接两个字符串。此处代码中+"1"
的评估与运算符优先级无关。
如果任一操作数是字符串,则会发生字符串连接。
+
运算符不是关于优先级的问题;它是解析表达式的唯一方式。 "优先级" 是指评估类似于 a + b * c
的规则。其次,如果 两个 操作数都是字符串,那么 +
不是字符串连接运算符;只有 其中一个 是字符串时才会进行连接。 - user663031"1" + 2 === "12"
或3 + "4" === "34"
。+"1"
将"1"
字符串强制转换为数字1
,就像parseInt("1")
一样。+"1" + 3 === 4
。+
来进行类型转换。1 + "1" === "11"
中,它会将数字转换为字符串。
+“1”
为什么会被转换为1
。 - Eric Duminil+“1”
是将字符串转换为数字的一种方式,因为这是规范,就是解释为什么会发生的100%相同。即使那个重复的目标不完美,这种行为在过去几十年的数百或数千个教程、介绍、博客文章和文档页面中都有记录。 - user663031