JavaScript 中的以下所有表达式非常明显。
var x = 10 + 10;
的x
值为20
。
x = 10 + '10';
x
在这种情况下的值是1010
因为+
运算符被重载。如果任何操作数是字符串类型,则进行字符串连接,如果所有操作数都是数字,则执行加法。
x = 10 - 10;
x = 10 - '10';
在这两种情况下,值x
将是0
因为-
运算符没有以这种方式重载,并且所有操作数都转换为数字,如果它们不是在执行实际减法之前(你可以澄清,如果无论如何我错了) .
下面的表达式会发生什么。
x = '100' - -'150';
的x
值为250
。这似乎也很明显,但这个表达式在某种程度上似乎等同于以下表达式。
x = '100' +'150';
如果是这种情况,那么这两个字符串将被连接并分配100150
给x
. 那么为什么在这种情况下执行加法呢?
编辑 :
+'10' + 5
返回15
和'a' + + 'b'
返回aNaN
。有谁知道为什么?