以下评估内容是什么?
"1"+2+4
这个怎么样:
5 + 4 + "3"
在第一种情况下,"1"
是一个字符串,所有内容都是字符串,因此结果为"124"
。在第二种情况下,93
。这里发生了什么?为什么在一个实例中发生添加,而在另一个实例中发生字符串连接?
var x = "1" + 2 + 4;
var z = 5 + 4 + "3";
console.log(x); // "124"
console.log(z); // 93
任何人都能解释一下吗?
答案 0 :(得分:5)
表达式从左到右进行评估。
"1"+2+3
^--^
"12" //string +3
^_____________^
"123" //string
第二种情况
1+2+"3"
^_^
3+"3"
^___^
"33" // string
答案 1 :(得分:1)
考虑操作顺序(rtl或ltr)每次执行二进制操作时它会相应地转换它,因此5 + 4将是int而(5 + 4)+“3”将是一个字符串,因为“3”是一个字符串
同样的方法适用于不同的例子
答案 2 :(得分:0)
var x = "1" + 2 + 4; // 124
这是取字符串“1”并连接到它“2”和“4”作为字符串。
var z = 5 + 4 + "3"; // 93
这是将数字4和5加在一起得到数字9,然后将字符串“3”连接到那里以产生另一个字符串。
这里要带走的关键是你在这里做的最终结果是字符串连接。评估数字的顺序不同,但最终结果是字符串。
答案 3 :(得分:0)
在第一种情况下,首先创建一个字符串(1),然后javascript将以下数字连接成字符串(124)。
在第二个中你首先创建一个数字,然后javascript将第二个数字添加到第一个数字(5 + 4 = 9),然后你添加一个字符串,使它连接9和3
答案 4 :(得分:0)
在两种情况下都应用类型转换和从左到右的优先级。 在第一个,
var x = "1" + 2 + 4; // 124
编译器将1作为字符串,然后它将与2连接,现在12是字符串,因此它将与4连接,结果将产生“124”作为字符串。
var z = 5 + 4 + "3"; // 93
在第二个, 前5和4是数字,所以make add和9.将与字符串3连接soo输出将是93作为字符串。