+ и приведение к строкеБинарный оператор + следует простому правилу: если хотя бы один операнд является строкой, JavaScript преобразует другой операнд в строку и конкатенирует их вместо сложения.
1 + "2" + "2" → "1" + "2" + "2" → "122"+"1" + "1" + "2" → 1 + 1 + "2" → "22" подожди → 2 + "2" → "22" ... вычисляется слева направо → "112"+ и -Унарный оператор + преобразует свой операнд в число до выполнения любой бинарной операции.
Унарный оператор - делает то же самое, но также инвертирует знак результата.
+"2" → 2 (число)-"1" → -1 (число)Это означает, что они вычисляются в первую очередь, изменяя тип перед тем, как бинарный + увидит операнды:
1 + +"2" + "2" → 1 + 2 + "2" → 3 + "2" → "32"1 + -"1" + "2" → 1 + (-1) + "2" → 0 + "2" → "02"- и числовое приведениеВ отличие от +, бинарный оператор - всегда пытается выполнить числовое преобразование обоих операндов — у него нет строкового поведения.
"A" - "B" → NaN - NaN → NaNNaN + "2" → "NaN2" (NaN преобразуется в строку "NaN", затем конкатенируется)NaN + 2 → NaN (числовое сложение с NaN всегда возвращает NaN)Унарный +/- → всегда преобразует в число
Бинарный + → конкатенирует, если хотя бы один операнд строка
Бинарный - → всегда принудительно преобразует в число
Бинарный оператор + будет конкатенировать строки, если хотя бы один операнд является строкой, а бинарный оператор - всегда выполняет числовое приведение обоих операндов независимо от их типов.
Новый — ещё не проверен сообществом
Вы