Изучение 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}
Это тип сопоставления с образцом, распространенный в функциональных языках. Это действительно хороший способ разбить информацию и получить информацию, которая вам нужна.
В будущем я мог бы написать еще несколько примеров об этих функциях.
Удачного кодирования :)