PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

В чем особенность конкатенации?

Продвинутые темы

Особенность конкатенации в JavaScript — оператор `+` при участии строки приводит другие операнды к строке, что порождает неявные и неочевидные преобразования типов.

Двойная роль +

Оператор + — и сложение, и конкатенация. Если хоть один операнд строка, + конкатенирует (приводя второй к строке):

'5' + 3;    // '53' — число к строке
5 + '3';    // '53'
5 + 3;      // 8 — оба числа, сложение
'a' + 1 + 2; // 'a12'
1 + 2 + 'a'; // '3a' — слева направо: (1+2)='3'? нет, 1+2=3, потом 3+'a'='3a'

Неявные приведения

'5' + true;      // '5true'
'5' + null;      // '5null'
'5' + undefined; // '5undefined'
'5' + [1, 2];    // '51,2' — массив → строка
'5' + {};        // '5[object Object]'

Отличие от других операторов

-, *, / приводят к числу, а не к строке:

'5' - 1;  // 4  — строка к числу
'5' + 1;  // '51' — конкатенация
'5' * 2;  // 10

Как избежать сюрпризов

  • Явные преобразования: Number('5') + 3, String(5) + 3.
  • Шаблонные строки: ` ${a}${b} ` — понятнее для склейки.

Коротко для собеседования

Особенность конкатенации: + приводит операнды к строке, если хотя бы один — строка ('5' + 3 = '53'), порождая неявные преобразования ('5' + [1,2] = '51,2'). Другие операторы (-, *) приводят к числу. Для ясности используют явные преобразования и шаблонные строки.

Другие вопросы раздела