Изучение JavaScript было поучительным опытом. Должен признаться, я был удивлен некоторыми недостатками JavaScript по сравнению с другими строго типизированными языками, такими как C++, C# и Java.

Несколько странных вещей:

  • Странное неопределенное поведение, когда что-то не так? например, попробуйте добавить число и строку :D
  • объем функций….
  • Что это'? Детка, не делай мне больно, не делай мне больно, не больше.
  • прототипное наследование
  • Копировать объект — легко, верно? Не так быстро
  • Сравнение на равенство

Также некоторые мелкие вещи, такие как отсутствие закрытых методов, динамическая типизация и т. д. Я также работал с python, поэтому динамическая типизация не была такой уж незнакомой, но с этими другими странностями это определенно казалось чем-то другим. Это точно был не питон!

Но! Изучая новый язык, всегда есть что-то хорошее. Недавно я прочитал книгу под названием 7 языков программирования за 7 недель. Это отличное чтение. В книге рассматриваются 7 языков программирования и проводится сравнение между разными языками. Цель состоит не в том, чтобы быть экспертом, а в том, чтобы получить общее представление о том, как разные языки решают одни и те же проблемы. Книга сравнивает парадигмы программирования и начинается с более объектно-ориентированных языков, некоторых основанных на обмене сообщениями, а затем более функциональных языков.

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

.filter(), .map(), and .reduce()

Я также обнаружил, что стрелочные функции компактны и полезны в сочетании с этими методами наряду с другими, такими как .find(). Стрелочные функции очень полезны, но вы должны знать, когда их использовать, иначе вы также можете попасть в беду.

Еще одна приятная функция — оператор спреда. Если вы хотите взять часть, остаток или весь массив, вы можете легко сделать это с помощью оператора спреда.

Еще одна замечательная функция — деструктуризация. Это позволяет вам взять часть объекта или массива и присвоить его переменной.

Из документации они предоставили этот пример.

let a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20

// Stage 4(finished) proposal
({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}

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

В будущем я мог бы написать еще несколько примеров об этих функциях.

Удачного кодирования :)