javascript - JavaScript 数字和字符串声明
问题描述
我试图了解如何在以下 JavaScript 代码上获得真正的逻辑:
var x = "10";
var y = "20";
var result = x + y;
document.getElementById("demo").innerHTML = result;
链接:https ://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_add_strings4
以下代码的 OUTPUT 在“加法”操作中为 = 1020。在我看来,我认为这是正确的,因为它是将两个数字串联为一个字符串。
var x = "100";
var y = "10";
var z = x / y;
document.getElementById("demo").innerHTML = z;
链接:https ://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_string1
但是以下代码的输出在“除法”操作中为= 10,并且不能将这两个数字计为字符串。它将这两个数字计算为数字。****请任何人帮助我,我会清楚地理解它。****
解决方案
无论您提供什么类型的数据,JavaScript 都会尽力为您提供合理的答案。在您的第一个示例中,它看到您将 + 运算符应用于两个字符串。这是它要做的有效事情(连接),因此不执行强制 - 两个字符串被连接。
在您的第二个示例中,它看到您将 / 运算符应用于两个字符串。这不是一件有效的事情,但是将该运算符应用于数字将是有效的,并且您给它的字符串都可以表示为数字,所以它就是这样做的。它将它们转换为数字,然后执行此除法。
这种自动强制转换非常方便(您不必像在其他语言中那样担心 JavaScript 中的类型)。有时它也可能有点危险,因为它会给你带来意想不到的结果,但是一旦你了解了强制的方式和时间,危险就会减少一些。
推荐阅读
- sql-server - Check_mk_agent 错误:未能收集 SQL Server 实例
- android - 降低 ble for android 的 Tx 功率
- visual-studio - 项目xamarin中不存在目标“CssG”
- spring-boot - RestTemplate 模拟给出 NullPointerException
- azure - Azure函数队列触发器执行多次
- python - 从数据框的不同列显示堆积条形图的每种颜色的值
- node.js - pg-promise 将整数读取为字符串,即使在被解析之后也是如此
- sql - SQL中的左右连接
- node.js - Angular 5 - ag-grid 18.0.1 - 边缘崩溃
- ios - 向下滚动(或从 ipad 更改为 iphone 时)的 TableViewCell 边框和阴影