3 + true == 4
Я не шучу. В JavaScript, когда оператор + находится между числом и булевым значением, последний конвертируется в число.
В этих случаях и false == 0. Учитывая это, 3 + true конвертируется в 3 + 1 и следовательно мы получаем ответ 4.
3 + true // 4 3 - true // 2 3 + false // 0 3 - false // 0 3 + 1 - true // 3 3 - false + true // 4
True + False
Это следует такой же логике как в примере выше. Когда оператор + размещен между двумя булевыми значениями, они конвертируются в числа. Следовательно, true + false конвертируется в 1 + 0 и в итоге мы получаем ответ 1.
'4' + 8
Что случается когда мы добавляем число в строке к обычному числу? Когда оператор + находится между этими двумя операндами и один из них является строкой, это сконвертирует другое число или булево значение в строку и свяжет их.
Следуя этой логике, '4' + 8 становится '4' + '8' и мы получаем ответ '48'.
true + '4'
Так же как и в примере выше, JavaScript сконвертирует boolean в сточное значение и свяжет его. Это станет 'true' + '4' и результатом будет 'true4'.
1 + 1 + '1'
Порядок операций очень важен. В этом примере, JavaScript считает первый + перед чем либо ещё, что ведет к 1 + 1 = 2. Далее мы добавляем строчной значение '1'. Происходит связывание и как результат мы получаем '21'.
'1' + 1 + 1
Что меняется, когда у нас есть строчное значение на первом месте? Помните о порядке операций и работайте слева на право.
string + number = string
В этом случае у нас останется только одна длинная строка '111'.
-'69' + 69
Что если мы попытаемся инвертировать в минус строку и затем добавить число? Как вы должны знать к этому моменту, без минуса, наш ответ был бы '6969'. Тем не менее минус все меняет.
Знак минус перед '69' это унарный оператор минуса, который на самом деле сконвертирует строку в число и сделает его отрицательным. Следовательно, наше уравнение станет -69 + 69, что будет равно 0.
-'giddyup' + 409
Что если наш унарный оператор минуса будет перед строкой, которая не может быть сконвертирована в число? Когда JavaScript не может сделать число, мы остаемся только с NaN, что означает, то что это не число.