JavaScript. Почему 3 + true = 4? И другие хитрые уравнения приведения типов
#javascript#javascript советы3 + true === 4. Сейчас вы узнаете почему так происходит и ещё узнаете про 8 других интересных JavaScript уравнений.

Как лучше читать эту статью
Это может вас немного смутить, но вам надо делать так, как я напишу дальше. Вам придется открыть консоль разработчика в Chrome, нажав в Windows: Ctrl + Shift + J или в Mac Cmd + Option + J. Это даст вам возможность напечатать весь следующий код в браузере и вы сможете увидеть в реальном примере то, что происходит.
3 + true == 4
Я не шучу. В JavaScript, когда оператор + находится между числом и булевым значением, последний конвертируется в число.
В этих случаях и false == 0. Учитывая это, 3 + true конвертируется в 3 + 1 и следовательно мы получаем ответ 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'
2 + '1'
'21'
‘1’ + 1 + 1
Что меняется, когда у нас есть строчное значение на первом месте? Помните о порядке операций и работайте слева на право.
'1' + 1 + 1
'11' + 1
'111'
string + number = string В этом случае у нас останется только одна длинная строка '111'.
-‘69’ + 69
Что если мы попытаемся инвертировать в минус строку и затем добавить число? Как вы должны знать к этому моменту, без минуса, наш ответ был бы ‘6969’. Тем не менее минус все меняет.
Знак минус перед ’69’ это унарный оператор минуса, который на самом деле сконвертирует строку в число и сделает его отрицательным. Следовательно, наше уравнение станет -69 + 69, что будет равно 0.
-‘giddyup’ + 409
Что если наш унарный оператор минуса будет перед строкой, которая не может быть сконвертирована в число? Когда JavaScript не может сделать число, мы остаемся только с NaN, что означает, то что это не число.

