Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 为什么一个typeof string的数字乘以另一个typeof string的数字会得到一个数字?_Javascript_String_Numbers_Typeof - Fatal编程技术网

Javascript 为什么一个typeof string的数字乘以另一个typeof string的数字会得到一个数字?

Javascript 为什么一个typeof string的数字乘以另一个typeof string的数字会得到一个数字?,javascript,string,numbers,typeof,Javascript,String,Numbers,Typeof,所以我在运行算法,遇到了一个我不理解的问题的解决方案。我知道string+string会导致两个字符串合并,即使这些字符串是string类型的数字。我不明白的是,为什么将一个字符串类型的数字乘以另一个字符串类型的数字也会得到一个数字类型的值。例如: “8”*“9”的结果是72,类型是数字,但是“8”+“9”给出了“89”并且是一个字符串。以下代码段显示了这一点: console.log(“8”*“9”); 控制台日志(“8”+“9”)这是因为*没有为字符串定义,也就是说,将一个字符串乘以另一个

所以我在运行算法,遇到了一个我不理解的问题的解决方案。我知道string+string会导致两个字符串合并,即使这些字符串是string类型的数字。我不明白的是,为什么将一个字符串类型的数字乘以另一个字符串类型的数字也会得到一个数字类型的值。例如:

“8”*“9”
的结果是72,类型是数字,但是
“8”+“9”
给出了
“89”
并且是一个字符串。以下代码段显示了这一点:

console.log(“8”*“9”);

控制台日志(“8”+“9”)这是因为
*
没有为字符串定义,也就是说,将一个字符串乘以另一个字符串没有任何意义(和定义),因此,它会检查字符串是否是数字(其中定义了
*
),如果是,则将其乘以数字(如果其中一个不是数字,则输出
NaN
,“不是数字”)。但是,对于加法,
+
是为数字和字符串定义的,因此在尝试添加字符串时,它只是添加字符串,而不是检查它们的值是否为数字,因为这样一来,您想要添加的内容、字符串或数字就会模糊不清。

为什么?因为在1993年Brendan Eich认为这是个好主意。