1) c += b;
и a += a;
по отношению к процессу проверки типа равны.
Объяснение того, что происходит, можно найти в 4)
.
2) d = d + b;
Это выражение будет интерпретировано компилятором следующим образом:
Выражение назначения:
левая сторона: d
токен (оператор): =
правая сторона: d + b
Чтобы проверить типы с обеих сторон, компилятор выводит тип для правого и левого выражения.
В случае левой стороны все просто.
Для правой стороны это будет число. Причина в том, что все математические операторы (+
, -
, ...) возможны только с числами (в j JavaScript), и поэтому результат должен быть также с номером типа.
С вычитанным введите Odd
слева и число справа, вы получите ошибку.
3) e = a + a;
По той же причине, что и строка выше (2)
)
4) a += a;
Это выражение сводится к следующему:
Выражение назначения: слева сторона: a
токен (оператор): +=
правая сторона: a
Поскольку мы знаем из вышеизложенного, все математические операторы могут применяться только к числам,
это должно быть само за себя. Компилятор проверяет, является ли левая сторона числом,
, которым является a
, и является ли правая сторона числом. a
или 1
- это числа, так что это работает.
Почему последняя строка работ теперь должна быть понятна, и я оставлю это как домашнее задание для вас;)