{"componentChunkName":"component---src-templates-post-js","path":"/javascript/javascript-pochemu-3true4-i-drugie-hitrye-uravneniya-privedeniya-tipov/","result":{"pageContext":{"slug":"javascript-pochemu-3true4-i-drugie-hitrye-uravneniya-privedeniya-tipov","content":"\n<p><code>3 + true === 4</code>. Сейчас вы узнаете почему так происходит и ещё узнаете про 8 других интересных JavaScript уравнений.</p>\n\n\n\n<p class=\"author\"><em>Перевод статьи&nbsp;</em><a href=\"https://codeburst.io/javascript-why-does-3-true-4-and-7-other-tricky-equations-9dd13cb2a92a\"><em>JavaScript: Why does 3 + true = 4? (and 7 other tricky equations)</em></a></p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"466\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2020/11/1_5cWyURkYJ3cGngd20lndfA.jpeg\" alt=\"\" class=\"wp-image-52\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2020/11/1_5cWyURkYJ3cGngd20lndfA.jpeg 700w, https://stasonmars.ru/wp/wp-content/uploads/2020/11/1_5cWyURkYJ3cGngd20lndfA-300x200.jpeg 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<h2 id=\"db4d\"><strong>Как лучше читать эту статью</strong></h2>\n\n\n\n<p id=\"2e4e\">Это может вас немного смутить, но вам надо делать&nbsp;так, как я напишу дальше. Вам придется открыть консоль разработчика в Chrome, нажав в Windows:&nbsp;<strong>Ctrl + Shift + J</strong>&nbsp;или в Mac&nbsp;<strong>Cmd + Option + J</strong>. Это даст вам возможность напечатать весь следующий код в браузере и вы сможете увидеть в реальном примере то, что происходит.</p>\n\n\n\n<h3 id=\"5abe\"><strong>3 + true == 4</strong></h3>\n\n\n\n<p id=\"48fe\">Я не шучу. В JavaScript, когда оператор&nbsp;<code>+</code>&nbsp;находится между числом и булевым значением, последний конвертируется в число.</p>\n\n\n\n<p id=\"79c8\">В этих случаях и&nbsp;<code>false == 0</code>. Учитывая это,&nbsp;<code>3 + true</code>&nbsp;конвертируется в&nbsp;<code>3 + 1</code>&nbsp;и следовательно мы получаем ответ&nbsp;<code>4</code>.</p>\n\n\n\n<h3 id=\"96e7\"><strong>True + False</strong></h3>\n\n\n\n<p id=\"759c\">Это следует такой же логике как в примере выше. Когда оператор&nbsp;<code>+</code>&nbsp;размещен между двумя булевыми значениями, они конвертируются в числа. Следовательно,&nbsp;<code>true + false</code>&nbsp;конвертируется в&nbsp;<code>1 + 0</code>&nbsp;и в итоге мы получаем ответ&nbsp;<code>1</code>.</p>\n\n\n\n<h3 id=\"2728\">‘<strong>4’ + 8</strong></h3>\n\n\n\n<p id=\"594f\">Что случается когда мы добавляем число в строке к обычному числу? Когда оператор&nbsp;<code>+</code>&nbsp;находится между этими двумя операндами и один из них является строкой, это сконвертирует другое число или булево значение в строку и свяжет их.</p>\n\n\n\n<p id=\"be64\">Следуя этой логике, &#8216;<code>4' + 8</code>&nbsp;становится&nbsp;<code>'4' + '8'</code>&nbsp;и мы получаем ответ&nbsp;<code>'48'</code>.</p>\n\n\n\n<h3 id=\"feb7\"><strong>true + ‘4’</strong></h3>\n\n\n\n<p id=\"e660\">Так же как и в примере выше, JavaScript сконвертирует&nbsp;<code>boolean</code>&nbsp;в сточное значение и свяжет его. Это станет&nbsp;<code>'true' + '4'</code>&nbsp;и результатом будет&nbsp;<code>'true4'</code>.</p>\n\n\n\n<h3 id=\"54f5\"><strong>1 + 1 + ‘1’</strong></h3>\n\n\n\n<p id=\"2213\">Порядок операций очень важен. В этом примере, JavaScript считает первый&nbsp;<code>+</code>&nbsp;перед чем либо ещё, что ведет к&nbsp;<code>1 + 1 = 2</code>. Далее мы добавляем строчной значение&nbsp;<code>'1'</code>. Происходит связывание и как результат мы получаем&nbsp;<code>'21'</code>.</p>\n\n\n\n<p>Вот цепочка событий:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>1 + 1 + '1'\n  2   + '1'\n       '21'</code></pre>\n\n\n\n<h3 id=\"75b7\">‘<strong>1’ + 1 + 1</strong></h3>\n\n\n\n<p id=\"f3bc\">Что меняется, когда у нас есть строчное значение на первом месте? Помните о порядке операций и работайте слева на право.</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>'1' + 1 + 1\n   '11' + 1\n       '111'</code></pre>\n\n\n\n<p><code>string + number = string</code>&nbsp;В этом случае у нас останется только одна длинная строка&nbsp;<code>'111'.</code></p>\n\n\n\n<h3 id=\"1b00\"><strong>-‘69’ + 69</strong></h3>\n\n\n\n<p id=\"4c1c\">Что если мы попытаемся инвертировать в минус строку и затем добавить число? Как вы должны знать к этому моменту, без минуса, наш ответ был бы&nbsp;<code>‘6969’</code>. Тем не менее минус все меняет.</p>\n\n\n\n<p id=\"f5af\">Знак минус перед&nbsp;<code>’69’</code>&nbsp;это унарный оператор минуса, который на самом деле сконвертирует строку в число и сделает его отрицательным. Следовательно, наше уравнение станет&nbsp;<code>-69 + 69</code>, что будет равно&nbsp;<code>0</code>.</p>\n\n\n\n<h3 id=\"47e4\"><strong>-‘giddyup’ + 409</strong></h3>\n\n\n\n<p id=\"8cd2\">Что если наш унарный оператор минуса будет перед строкой, которая не может быть сконвертирована в число? Когда JavaScript не может сделать число, мы остаемся только с&nbsp;<code>NaN</code>, что означает, то что это не число.</p>\n","type":"js","date":"2020-11-05T16:41:20.000Z","acf":{"seo_desc":"3 + true === 4. Сейчас вы узнаете почему так происходит и ещё узнаете про 8 других интересных JavaScript уравнений.","keywords":" Хитрые уравнения JavaScript, 3 + true === 4, JavaScript приведение типов","pub_date":"2018-04-25","tags":"JavaScript, JavaScript советы"},"title":"JavaScript. Почему 3 + true = 4? И другие хитрые уравнения приведения типов","id":"99fefe61-69be-5e93-b301-314bd65069ea","excerpt":"<p>3 + true === 4. Сейчас вы узнаете почему так происходит и ещё узнаете про 8 других интересных JavaScript уравнений.</p>\n","featured_media":{"source_url":"https://stasonmars.ru/wp/wp-content/uploads/2020/11/DglYtvO7Bn0-8.jpg"},"interesting":[{"title":"7 полезных уловок с rest параметрами и spread операторами на JavaScript объектах","slug":"7-poleznyh-ulovok-s-rest-parametrami-i-spread-operatorom-na-javascript-objectah","type":"js"},{"title":"Лучшие советы и уловки JavaScript","slug":"luchshie-sovety-i-ulovki-javascript","type":"js"},{"title":"Самые необходимые строковые и числовые методы в JavaScript","slug":"samie-neobhodimie-strokovie-i-chislovie-metody-v-javascript","type":"js"}]}},"staticQueryHashes":["3576131997","63159454"]}