了解JavaScript变量查询
JavaScript Variables Query understanding
我是新的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 + 2
是7
,而"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
- 查询后websql成功回调无法访问变量
- 使用MEAN堆栈-查询MongoDB并将值作为变量传递
- Mongoose从查询中设置本地变量
- 我想将查询字符串变量添加到JSON名称/值对中
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- 如何在 Meteor 中的 Mongo 查询中使用变量作为字段名称
- 通过 AJAX 调用 PHP 文件,将 $_GET 变量传递到 MySQL 查询中,然后回显到响应中
- 获取重复Get变量的查询字符串值
- 从查询字符串中获取变量,将其与Javascript中的数组匹配
- 如何设置查询字符串中的变量
- 如何在mongoose/node.js中的聚合查询中使用变量
- JQuery的PHP查询数组变量
- 如何在nodejs中的MySQL查询中使用多个变量
- 在LINQ.js查询中传递变量
- 使用铁路由器设置查询变量
- j查询变量的总和
- j查询变量的范围
- 在mongoose中查询变量
- 尝试ajax POST调用PHP将SQL查询变量返回给jquery时出现错误
- 如何处理未定义的查询变量