首页 > 解决方案 > 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,并且不能将这两个数字计为字符串。它将这两个数字计算为数字。****请任何人帮助我,我会清楚地理解它。****

标签: javascriptstringnumbersconcatenation

解决方案


无论您提供什么类型的数据,JavaScript 都会尽力为您提供合理的答案。在您的第一个示例中,它看到您将 + 运算符应用于两个字符串。这是它要做的有效事情(连接),因此不执行强制 - 两个字符串被连接。

在您的第二个示例中,它看到您将 / 运算符应用于两个字符串。这不是一件有效的事情,但是将该运算符应用于数字将是有效的,并且您给它的字符串都可以表示为数字,所以它就是这样做的。它将它们转换为数字,然后执行此除法。

这种自动强制转换非常方便(您不必像在其他语言中那样担心 JavaScript 中的类型)。有时它也可能有点危险,因为它会给你带来意想不到的结果,但是一旦你了解了强制的方式和时间,危险就会减少一些。


推荐阅读