Сумматорные операторы ECMAScript

В большинстве языков программирования оператор сложения (будь то плюс или минус) обычно является наиболее простым математическим оператором.

В ECMAScript у оператора сложения множество специальных поведения.

Оператор сложения

Оператор суммирования обозначается плюсом (+):

var iResult = 1 + 2

Как и у операторов умножения, у операции сложения в ECMAScript также есть некоторые особые поведения при обработке специальных значений:

  • Если某个 операнд является NaN, результат равен NaN.
  • -Infinity добавлено к -Infinity, результат равен -Infinity.
  • Infinity добавлено к -Infinity, результат равен NaN.
  • +0 плюс +0, результат равен +0.
  • -0 плюс +0, результат равен +0.
  • -0 плюс -0, результат равен -0.

Однако, если один из операндов является строкой, то применяются следующие правила:

  • Если оба операнда являются строками, вторая строка добавляется к первой.
  • Если только один операнд является строкой, другой операнд преобразуется в строку, результатом является соединение двух строк.

Например:

var result = 5 + 5;	//два числа
alert(result);		//вывод "10"
var result2 = 5 + "5";	//число и строка
alert(result2);		//вывод "55"

Этот код демонстрирует различия между двумя моделями оператора сложения. В нормальных условиях 5 + 5 равняется 10 (оригинальное значение), как показано в первых двух строках выше. Однако, если заменить один операнд на строку "5", результат станет "55" (оригинальное значение строки), потому что и другой операнд также будет преобразован в строку.

Внимание:Чтобы избежать распространенной ошибки в JavaScript, при использовании оператора сложения一定要 тщательно проверять тип данных операндов.

Оператор вычитания

Оператор вычитания (-) также является часто используемым оператором:

var iResult = 2 - 1;

Как и у оператора сложения, у оператора вычитания также есть некоторые особые поведения при обработке специальных значений:

  • Если某个 операнд является NaN, результат равен NaN.
  • Infinity минус Infinity, результат равен NaN.
  • -Infinity минус -Infinity, результат равен NaN.
  • Infinity минус -Infinity, результат равен Infinity.
  • -Infinity минус Infinity, результат равен -Infinity.
  • +0 минус +0, результат равен +0.
  • -0 минус -0, результат равен -0.
  • +0 минус -0, результат равен +0.
  • Если某个 оператор не является числом, результат равен NaN.

Комментарий:Если все операнды являются числами, выполняется обычное вычитание и возвращается результат.