JavaScript - один из самых ненавистных популярных языков программирования. Когда я попытался выполнить поиск с «ненавистным JavaScript», Google выдал 17 000 000 результатов, в то время как с «ненавистным Python» я получил только 1 880 000 результатов. Довольно большая разница!

Тем не менее, JavaScript - один из наиболее широко используемых языков программирования. Как недавно сообщал TIOBE, JavaScript занимает 3,3% рынка, а язык занимал 6-е место в списке 20 лучших языков программирования по состоянию на январь 2019 года.

Эти два пункта так сильно противоречат друг другу. Почему люди используют язык, который они так ненавидят? Этот пост объяснит вам несколько причин.

Почему так ненавидят JavaScript

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

IEEE 754 - Кошмар

Разработчики JavaScript решили использовать IEEE 754 с двойной точностью, и у вас есть только один числовой тип «Число». Точность иногда бывает очень забавной.

9999999999999999 == 10000000000000000 → true
0.1 + 0.2 === 0.3 → false
x = 1.0000000000000001
x === 1 → true

Смешной? Этот пример совершенно верен при соблюдении стандарта двойной точности IEEE 754, но он приводит к ошибкам, если программисты не знают об этом факте.

Еще один забавный случай, когда не число тоже считается числом.

typeof NaN == 'number' → true
NaN != NaN → true

Зависимость от браузера

Некоторые функции JavaScript зависят от браузера. Многие функции и свойства в разных браузерах выполняются по-разному. Поэтому не удивляйтесь, если то, что вы видите в Chrome, отличается от Internet Explorer.

Слабый набор текста и агрессивное принуждение

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

Давайте посмотрим на несколько странных примеров:

var a = "1"
var b = 2
var c = a + b → c = "12"
var d = +a + b → d = 3, note the unary plus sign (+a)
[] + [] → "" // adding two arrays and you have a String!
[] + {} → [object object]
{} + [] → 0 // I don't even know how to explain
{} + {} → NaN // ???
// Funny arrays
19 == [19] → true
19 == [1,9] → false
"1,9" == [1,9] → true

Семантика довольно иррациональна и хреново нелогична!

Чрезмерный код плиты котла

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

Раздражающие глобальные переменные

Как и большинство других языков программирования, JavaScript также поддерживает глобальные переменные. Что ж, очень важно иметь глобальные переменные. Однако способ обработки глобальных переменных в JavaScript весьма раздражает. Глобальные переменные имеют область действия или доступность во всей программе, поэтому вы никогда не узнаете, были ли они изменены где-то в программе вами или, возможно, любыми сторонними библиотеками, которые могут использовать то же имя переменной, что и глобальная переменная, которую вы объявили ранее. .

Также существует концепция Implied Globals. Если вы неправильно написали свою переменную, то JavaScript не покажет ошибку, вместо этого он объявит эту опечатку как новую глобальную переменную (если вы не используете 'use strict' в своем коде). Это приводит к новой глобальной переменной, которую вы никогда не собирались делать.

function foo() {
  var bam = 'This is a not a global variable';
  //
  // [... Some code...]
  //
  ban = 'Typo and now you have a global variable';
}

Все еще недостаточно раздражает? Тогда давай посмотрим

function myLoop() {
    var sum = 0;
    for(i = 0; i < 10; i++) {
        sum += i;
    }
    return sum;
}

В приведенном выше примере i был объявлен без var, let или const и, следовательно, он глобальный. Удачи в использовании i где-нибудь еще в вашей программе.

Почему JavaScript все еще так популярен

У JavaScript много недостатков. Многие считают это дерьмовым языком. Однако никто не может отрицать тот факт, что это один из самых популярных языков программирования. В этой части я объясню почему.

Когда дело доходит до Интернета, нет лучшего выбора, чем JavaScript

Тем не менее, даже спустя более 20 лет для веб-разработки нет лучшего выбора, чем JavaScript. Что ж, PHP также ненавидят многие разработчики.

Вместе с HTML и CSS JavaScript образует Святую Троицу Интернета. Кроме того, чтобы использовать jQuery, одну из самых популярных библиотек для интерфейсной разработки, требуется базовое понимание JavaScript. Те же истории для многих полезных фреймворков, о которых я расскажу позже.

Короче говоря, JavaScript очень популярен в веб-разработке. У нас нет (лучшего) варианта, чем использовать JavaScript в сети.

JavaScript прост в использовании и прост в использовании

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

Более того, поскольку код JavaScript может выполняться на стороне клиента, любые функции кода могут выполняться немедленно в процессоре / памяти компьютера пользователя, вместо того, чтобы связываться с сервером и ждать ответа. Следовательно, потребность в веб-сервере снижается. Эта функция также значительно ускоряет процесс обучения или развития.

Высокая гибкость для веб-разработки

С помощью JavaScript можно разработать полноценный веб-сайт благодаря богатому набору фреймворков как для интерфейсной, так и для внутренней разработки.

JavaScript состоит из мощных библиотек и фреймворков, которые используются на разных уровнях. Например, Node.JS поддерживает серверные сценарии, а React, Vue - для интерфейсной разработки.

JavaScript везде

Хотя JavaScript известен своей веб-разработкой, язык не ограничивается только этой областью. Его использование очень широко:

  • Веб-приложение: React Native и Ionic - хорошие названия для такого варианта использования. Есть несколько других хороших фреймворков, поддерживающих разработку гибридного приложения;
  • Визуализация данных. Когда дело доходит до визуализации данных, у JavaScript есть масса возможностей. Например, D3.js, Chart.js, Raphael.js или Leaflet. Эти библиотеки и фреймворки легкие и очень простые в использовании;
  • Робототехника и Интернет вещей: Johnny-Five очень хорошо поддерживает программирование робототехники и Интернета вещей. Он совместим с аппаратными устройствами, такими как Arduino, Intel Edison Tessel 2, Raspberry Pi и т. Д .;
  • Разработка игр: JavaScript также занимает прочное место в разработке игр. Используя фреймворк Phaser.JS, мы можем создавать большие веб-приложения или онлайн-игры.

Большое сообщество

JavaScript имеет огромную поддержку со стороны технических гигантов, таких как Facebook, Microsoft, Google и Alibaba. У этого языка очень многообещающее будущее. Его сообщество велико, поэтому очень легко попросить о поддержке.

Заключение

Есть только два типа языков: те, на которые люди жалуются, и те, которые никто не использует - Бьярн Страуструп

Короче говоря, причины, по которым этот дрянной язык широко используется, следующие:

  • Нет лучшей альтернативы, чем JavaScript, особенно в веб-разработке, поскольку JavaScript является одним из трех основных компонентов всемирной паутины наряду с HTML и CSS;
  • JavaScript очень легко изучить и использовать;
  • JavaScript очень гибкий. Его можно использовать для множества различных задач благодаря множеству полезных фреймворков и библиотек;
  • Его сообщество велико, и поэтому легко получить поддержку.

JavaScript широко используется. Таким образом, вполне понятно, что к нему поступает много жалоб.