Автоматическое преобразование типов в JavaScript
Следующие все выражения в JavaScript очень очевидны.
var x = 10 + 10;
Значениеx
является20
.
x = 10 + '10';
Значениеx
в этом случае1010
поскольку+
Оператор перегружен. Если какой-либо из операндов имеет тип string, производится конкатенация строк, и если все операнды являются числами, выполняется сложение.
x = 10 - 10;
x = 10 - '10';
В обоих этих случаях значениеx
будет0
поскольку-
оператор не перегружается таким образом, и все операнды преобразуются в числа, если они не перед фактическим вычитанием (вы можете уточнить, если я все равно ошибаюсь).
Что происходит в следующем выражении.
x = '100' - -'150';
Значениеx
является250
, Что также кажется очевидным, но это выражение в некоторой степени эквивалентно следующему выражению.
x = '100' +'150';
Если бы это было так, то эти две строки были бы объединены и назначены100150
вx
, Так почему же в этом случае выполняется сложение?
РЕДАКТИРОВАТЬ :
+'10' + 5
возвращается15
а также'a' + + 'b'
возвращаетсяaNaN
, Кто-нибудь знает почему?