Раскрытие секретов JavaScript

Всем известно, что JavaScript - странный язык, в котором часто нет смысла. Когда вы только начинали, вам нужно было сначала понять, почему

JavaScript - это однопоточный, высокоуровневый, часто скомпилированный точно в срок, многопарадигмальный, основанный на прототипах объектно-ориентированный динамический язык. - Википедия

А теперь вы, возможно, захотите понять, почему в нем есть, казалось бы, бессмысленные правила, в которых

и

На первый взгляд они кажутся нелогичными. Как NaN не равно NaN и как массив не равен массиву? Есть бесчисленное множество других примеров, когда кажется, что JavaScript не выполняет то, что мы хотим. В качестве примера возьмем следующее: весь смысл этой статьи:

Похоже, мы пытаемся записать в консоль «бактерии», объединяя строки вместе. Но на самом деле мы получаем вот что:

Преобразование типов в JavaScript

Так почему это происходит? Ответ заключается в преобразовании типов. JavaScript по своей природе слабо типизирован. Это позволяет нам использовать неявное преобразование типов. Возьмем, к примеру, следующее:

Несмотря на то, что мы не указали, что хотим преобразовать строку / число в другой формат, JavaScript сделал это за нас неявно. То же самое происходит с «бананом».

Понимание причины появления банана

В середине строки пытаемся преобразовать буквы в числа со знаком плюс. Это приводит к преобразованию cteri в NaN - Not A Number.

Если вы не укажете вызов toLowerCase, вы ясно увидите, что у нас есть «baNaNa».

Затем отдельные строки соединяются в одну с другим знаком плюс, и все переводится в нижний регистр, чтобы скрыть виновника. Вместо «cteri» можно использовать все. Если его нельзя преобразовать в число, вы получите бананы обратно.

Вывод

Хотя JavaScript иногда - или даже часто - может вести себя странно, если углубиться в его ядро ​​и увидеть его внутреннюю работу, мы можем лучше понять, почему определенные вещи происходят именно так. Это также дает нам возможность избежать появления потенциальных ошибок в наших приложениях и быть более осторожными при написании логики, включающей преобразование типов - или любой другой логики в этом отношении.

Если вас интересуют более любопытные случаи использования JavaScript, я настоятельно рекомендую просмотреть список wftjs, которые послужили вдохновением для этой статьи. Вы можете найти действительно интересные примеры кода. С ними вы лучше поймете JavaScript, и это расширит ваши знания о языке.

Что стало для вас самым большим открытием в отношении часто неизвестного JavaScript? Дайте нам знать об этом в комментариях! Спасибо, что прочитали, удачного кодирования!