JavaScript中的' 2' +' 2' - ' 2' = 20?

时间:2018-02-08 01:04:52

标签: javascript string math

我只是在随机玩JavaScript。 我给它的'2'+'2'-'2'输入。

,输出结果令人惊讶20



console.log('2'+'2'-'2');




现在我没有得到它。

有人向我解释为什么会这样?如何输出这个等于20

3 个答案:

答案 0 :(得分:20)

'2' + '2'是连接和添加。如果任何参数不是数字,那么它就是连接。因此,'22'"foo" + "bar" - 就像"foobar" 3 + {}一样,就像"3[object Object]" -一样。

'22' - '2'只是减法。无论它的论点是什么,它们都被强迫数字。因此,22 - 2被评估为data_0.100.txt,即20。

答案 1 :(得分:2)

JavaScript在查找+时执行字符串连接。所以第一个" 2"第二个" 2"制作" 22"。

但是当对字符串执行减法(-)时,会发生强制。所以结果" 22" 强制到号码22和最终" 2" 强制编号为2。最后,将222减去结果20

更多信息:Coercion

逐步评估:

'2' + '2' - '2'

'22' - '2'

22 - 220

答案 2 :(得分:2)

JavaScript中使用的机制称为coercion

JavaScript中的+符号可以执行字符串连接或算术添加。那么JavaScript如何选择要执行的操作呢?

如果两个参数(在+的两侧)都是字符串,则JavaScript会执行连接。



console.log(2 + 2); // 4
console.log('2' + '2'); // '22'




但减号只有一个含义:算术减法。

因此JavaScript只有一种方法可以解释'22' - 2,即从' 22'中减去2。但当然' 22'不是一个数字,所以JavaScript首先强迫它("强制"它)成为一个数字。

执行的实际操作是22 - 2,可以很容易地计算出20,即您观察到的结果。