В чем особенность конкатенации?
Продвинутые темы
Особенность конкатенации в 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'). Другие операторы (-, *) приводят к числу. Для ясности используют явные преобразования и шаблонные строки.