了解JavaScript变量查询

JavaScript Variables Query understanding

本文关键字:查询 变量 JavaScript 了解      更新时间:2023-09-26

我是新的JavaScript,有人可以解释为什么这3个结果是不同的?


示例1

.

var x = 5 + 2 + 3;
document.getElementById("demo").innerHTML = x;

输出:10


示例2

.

var x = 5 + 2 + "3";
document.getElementById("demo").innerHTML = x;

输出:73


3 .

例子

var x = 5 + "2" + 3;
document.getElementById("demo").innerHTML = x;

输出:523

+重载执行字符串拼接加法,并且是从左到右关联的。

因为操作符是重载的,所以需要有一个规则来解决两个操作数属于不同数据类型的情况。这个规则很简单:

如果一个操作数是字符串,则将另一个操作数转换为字符串

这意味着代码被计算为

// 1.
((5 + 2) + 3) 
 = 7 + 3 
 = 10
// 2.
((5 + 2) + "3")
  = 7 + "3"           // number + string -> convert number to string
  = "7" + "3" 
  = "73"
// 3.
(("5" + 2) + 3)       // number + string -> convert number to string
  = (("5" + "2") + 3)  
  = "52" + 3          // number + string -> convert number to string
  = "52" + "3" 
  = "523"

+从左到右,执行哪个操作取决于参数。如果两个参数都是数字,则执行加法。如果任何参数不是数字,则执行连接。因此,5 + 27,而"5" + "2""52"(就像"a" + "b""ab"一样)。此外,5 + "2""5" + 2也都是"52"。然后,它类似地与52 + 3, 52 + "3""52" + 3一起工作。

这与JavaScript具有松散类型数据类型的事实有关。在第一个示例中,所有的数字都被求和,因为它们都被视为整数。

在您的其他示例中,语句是从左到右处理的。因此,number + number + string首先将数字相加,然后尝试将数字和字符串相加,这将使返回的结果成为字符串。

在number + string + number的情况下,当将前两个操作数相加时输出为字符串,因此当将字符串和数字相加时,它将返回字符串。

进一步阅读:http://www.w3schools.com/js/js_datatypes.asp

提供的答案的稍微不那么技术性的版本(这些答案都比这个答案更正确),但允许您不理解显示的输出-它都是关于字符串与数字的-如果两个元素是数字并且您将它们相加-您将得到数字加法。如果你有一个数字和一个字符串-当你把它们加起来时,输出将是数字后面跟着字符串。

看看你的例子:

var x = 5 + 2 + 3;
Output: 10

5、2和3都是数字,所以输出是它们加在一起的结果

var x = 5 + 2 + "3";
Output: 73

5和2是数字,所以加在一起得到7,但是"3"是字符串,所以它给出数字后面跟着字符串,即7后面跟着3或73

   x = "5" + 2 + 3;
   Output: 523

5是字符串,2和3是数字,但不是相加而是相邻显示- 523

var x = 5 + "2" + 3;
Output: 523

5为数字,"2"为字符串,"3"为数字,但不相互叠加,而是相邻显示- 523