javascript字符串和数字变量

时间:2013-02-05 05:00:10

标签: javascript converter string-concatenation operator-precedence

以下评估内容是什么?

"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 

任何人都能解释一下吗?

5 个答案:

答案 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作为字符串。