Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript减法过程中的意外行为_Javascript_Html - Fatal编程技术网

Javascript减法过程中的意外行为

Javascript减法过程中的意外行为,javascript,html,Javascript,Html,嗨,我有一个像这样的javascript代码 var a=10; var b="100"; document.write(b-a); 实际上,当我们从字符串中减去一个数字时,它应该显示一个错误,但它显示为90作为输出,但当我们执行b+a时,它显示为10010作为输出,这是什么行为。JavaScript中的-运算符仅适用于数学,因此您的变量都转换为数字。如果您尝试执行无效的数学运算,例如100-'a',则只会出现错误(或者更具体地说是NaN)。+运算符对字

嗨,我有一个像这样的javascript代码

    var a=10;
    var b="100";        
    document.write(b-a);

实际上,当我们从字符串中减去一个数字时,它应该显示一个错误,但它显示为90作为输出,但当我们执行b+a时,它显示为10010作为输出,这是什么行为。

JavaScript中的
-
运算符仅适用于数学,因此您的变量都转换为数字。如果您尝试执行无效的数学运算,例如
100-'a'
,则只会出现错误(或者更具体地说是
NaN
)。
+
运算符对字符串和数字都有效,因此其行为会发生变化:

  • 如果两个变量都是数字,则使用数学加法
  • 否则将使用字符串连接

当您进行减法运算时,Javascript会尝试将字符串
b
转换为数字,因为没有为字符串定义
-
操作

当您使用
+
符号时,Javascript会尝试将数字
a
转换为字符串,因为
+
被定义为字符串的串联