{Вы пока еще не знаете JS} Познакомьтесь, JavaScript - Кайл Симпсон - E-Book

{Вы пока еще не знаете JS} Познакомьтесь, JavaScript E-Book

Кайл Симпсон

0,0

Beschreibung

Вы пока еще не знаете JS. И Кайл Симпсон признается, что тоже его не знает (по крайней мере полностью)… И никто не знает. Но все мы можем начать работать над тем, чтобы узнать его лучше. Сколько бы времени вы ни провели за изучением языка, всегда можно найти что-то еще, что стоит изучить и понять на другом уровне. Учтите, что, хотя книга и называется «Познакомьтесь, JavaScript», она не для новичков. У нее другая задача: дать обзор тем, в которых необходимо разобраться на начальном этапе изучения JS. Даже если вы уже написали достаточно кода JS, эту книгу не стоит пропускать, возможно, в ваших знаниях есть пробелы, которые необходимо заполнить перед углубленным изучением сложных тем. Пора начать изучение JS!

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 121

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Переводчик Е. Матвеев

Кайл Симпсон

{Вы пока еще не знаете JS} Познакомьтесь, JavaScript. 2-е изд.. — СПб.: Питер, 2024.

ISBN 978-5-4461-1875-5

© ООО Издательство "Питер", 2024

Оглавление

Благодарности
Предисловие
Вступление
Части языка
Название?
От издательства
1. Что такое JavaScript?
О книге
Откуда взялось название?
Спецификация языка
Веб (JS)
Не только (веб) JS…
Не всегда JS
Многоликий язык
Прямая и обратная совместимость
Транспиляция
Полифилы
Что такое интерпретация?
WASM (Web Assembly)
Строго говоря
После определения
2. Обзор возможностей JS
Каждый файл является программой
Значения
Массивы и объекты
Определение типа значения
Объявление и использование переменных
Функции
Сравнения
Организация кода JS
Модули
Кроличья нора становится глубже
3. JS: копаем вглубь
Итерации
Замыкания
Ключевое слово this
Прототипы
А теперь «почему?»
4. Общая картина
Столп 1: области видимости и замыкания
Столп 2: прототипы
Столп 3: типы и преобразования
По ветру
А. Дальнейшее изучение
Значения и ссылки
Многоликие функции
Прототипические классы
Б. Практика, практика, практика!
Сравнения
Замыкания
Прототипы
Предлагаемые решения
Рекомендуем прочитать

Благодарности

Прежде всего спасибо моей жене и детям. Их постоянная поддержка позволила мне продолжать работу. Также хочу поблагодарить 500 бэкеров первого издания «Вы не знаете JS» (YDKJS) на Kickstarter, а также сотни тысяч людей, которые купили и прочли эти книги. Без вашей финансовой поддержки второе издание не состоялось бы. Также спасибо интервьюеру из одной соцсети с птичьим названием, который сказал, что я «недостаточно знаю JS», чем помог мне выбрать название для серии книг.

Своей карьерой я в значительной мере обязан Марку Грабански (Marc Grabanski) и FrontendMasters. Много лет назад Марк оказал мне доверие и помог сделать первые шаги в области преподавания. Если бы не он, я не начал бы писать книги! Frontend Masters является главным спонсором «Вы все еще не знаете JS») (2-е издание). Спасибо вам, Frontend Masters (и Марк!).

Наконец, мой редактор Саймон Сен-Лоран (Simon St. Laurent) помог мне определиться с первоначальным  замыслом серии YDKJS и стал редактором моей первой книги. Поддержка и советы Саймона оказали на меня серьезное влияние, и именно благодаря им я в значительной мере сформировался как автор. Прошло много лет с тех пор, как за выпивкой в Driskill родился замысел YDKJS. Спасибо тебе, Саймон, за все эти годы, что ты указывал мне путь и улучшал эти книги!

Предисловие

Когда я впервые увидел твит с рекламой сбора денег на оригинальную серию книг «Вы не знаете JS», я подумал: кем бы ни был этот Кайл Симпсон, пускай идет лесом. Конечно же, я знаю JavaScript! В то время я работал на JavaScript уже много лет с самыми авторитетными представителями отрасли и поэтому считал, что на подобные обобщения могу смотреть свысока.

После того как кампания завершилась, я заметил, что многие люди с большим энтузиазмом относятся к этой серии. И тогда я решил все же попробовать — просто чтобы показать всем, что я знаю JavaScript. Но когда я погрузился в материал и стал внимательно изучать текст, то испытал глубокое чувство удивления, любопытства и даже некоторого раздражения. У Кайла настоящий дар говорить что-то такое, что противоречит моим представлениям о мире, и заставлять меня думать об этом, пока я не пойму, что сказанное было правдой (хотя я ему в этом никогда не признаюсь).

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

Именно этим и примечательна книга. Она написана не только для тех, кто хочет освоить новый язык (хотя и для них тоже); она написана для ремесленников от программирования, которые хотят мастерски овладеть своими инструментами, понимать все тонкости своего ремесла и выбирать подходящие средства для решения задач.

В Кайле и его работе мне прежде всего нравится то, что он остается восхитительно непоколебимым перед влиянием окружающего его мира программирования. Это вовсе не означает, что он не в курсе происходящего в сообществе; скорее он не отклоняется от своего поиска лучших ответов на правильно поставленные вопросы. Часто он начинает противоречить новейшим «лучшим практикам», но в действительности это именно то, что нужно: точка зрения, которая вне времени и просто выявляет истину. Этим-то так хороша эта серия. Первое издание «Вы не знаете JS» остается актуальным даже годы спустя! Немногие книги выдержали проверку временем с учетом меняющегося ландшафта Java­Script.

Несколько слов о первой книге, «Познакомьтесь, Java­Script». Возможно, у вас возникнет соблазн пропустить ее, потому что вы думаете, что «первые шаги» уже давно сделаны. И все же вам стоит ее прочитать! Вы не поверите, сколько глубины, нюансов и странностей кроется в основных структурных элементах Java­Script. Очень важно, чтобы вы освоили всю эту подоплеку, прежде чем переключаться на конструкции языка. Именно такой фундамент понадобится вам для того, чтобы действительно хорошо знать JavaScript.

Итак, окажите себе услугу, основательно прочитайте эту книгу и высвободите содержащиеся в ней знания. Этот надежный фундамент послужит вам лучше, чем любой фреймворк или библиотека; они приходят и уходят, но все мы еще будем писать код Java­Script в ближайшие десятилетия. Сохраняйте объективность и ставьте под сомнение свои стереотипы.

Потому что, как я сам убедился, скорее всего, вы не знаете Java­Script (пока).

Брайан Холт (Brian Holt), старший разработчик Visual Studio Code и Node.js для Azure Microsoft

Вступление

Вашему вниманию предлагается 2-е издание снискавшей популярность серии книг «Вы не знаете JS»: «Вы пока еще не знаете JS» (YDKJSY).

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

Я надеюсь и верю, что вы все еще сохраняете то же стремление изучить JS и разобраться в том, как он устроен.

Если вы читаете эти книги впервые, я рад, что они попались вам на глаза. Подготовьтесь к увлекательному путешествию по закоулкам  JavaScript.

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

Части языка

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

Возможно, вы слышали (или сами считаете), что JS — глубоко ущербный язык, плохо спроектированный и непоследовательно реализованный. Многие считают, что это худший из популярных языков, что никто не пишет код JS добровольно, а только из-за того, что он занял свое место в сети. Это смехотворные, нездоровые и высокомерные утверждения.

Миллионы разработчиков ежедневно пишут код Java­Script, и многие из них уважают и ценят этот язык.

Как и у любого великого языка, у него есть как выдающиеся достоинства, так и недостатки. Даже сам создатель JavaScript Брендан Эйх сожалеет по поводу некоторых частей и называет их ошибками. Но он заблуждается: они вовсе не были ошибками. В наши дни JS стал тем, чем он стал — самым распространенным, а следовательно, самым влиятельным языком программирования, — именно из-за всех этих частей.

Не ведитесь на утверждения, будто вам следует изучить и использовать только небольшой набор хороших частей, а от всего плохого нужно держаться подальше. Не ведитесь на шарлатанство «X — это новый Y», будто с появлением в языке некоторой новой возможности все предшествующее использование старой функцио­нальности мгновенно устаревает и отмирает. Не слушайте, когда кто-то вам говорит, что ваш код «не современен», потому что в нем еще не используется функция стадии 0, предложенная лишь несколько недель назад!

Все части JS полезны. Некоторые части полезнее других. Некоторые требуют действовать более внимательно и осознанно.

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

Я утверждаю, что изучать нужно все части JavaScript и пользоваться ими там, где они уместны! И я даже наберусь смелости предложить: выбросьте все книги, в которых говорится обратное.

Название?

Какой же смысл заложен в название серии?

Я не пытаюсь обидеть вас, ставя под сомнение ваш уровень знания или понимания JavaScript. Я не предполагаю, что вы не можете или не сможете изучить Java­Script. Я не хвастаюсь некими секретными тайными знаниями, которыми обладаю только я и еще несколько избранных.

Серьезно, все это реальные реакции на название оригинальной серии, которые появились еще до того, как книги увидели свет. И они совершенно необоснованны.

Главный смысл названия «Вы пока еще не знаете JS» — подчеркнуть, что большинство разработчиков JS не тратит время на то, чтобы по-настоящему понять, как работает написанный ими код. Они знают, что код работает — он выдает желаемый результат. Но они либо не понимают, как он работает, либо, что еще хуже, руководствуются неточной ментальной моделью, которая дает сбой при ближайшем рассмотрении.

Я предлагаю вам отложить все свои допущения по поводу JS, взглянуть на язык свежим взглядом и подойти к нему с заново пробужденной любознательностью. Спрашивайте себя «почему?» каждый раз, когда пишете строчку. Почему она работает именно так, а не иначе? Почему один способ лучше или уместнее пяти-шести других возможных решений? Почему все «лидеры мнений» предлагают делать X в вашем коде, но выясняется, что вариант Y оказывается лучше?

Я добавил в название «пока» не только потому, что это второе издание, но и из-за того, что в конечном итоге я хочу, чтобы книги вселяли в вас надежду, а не наоборот.

Не думаю, что JS вообще возможно знать полностью. Это не достижение, которое необходимо получить, а цель, к которой нужно стремиться. Не думайте, что вы все узнаете о JS и на этом все закончится; нет, вы просто продолжаете учиться, все чаще практикуясь в написании кода. И чем глубже вы погружаетесь, тем чаще возвращаетесь к тому, что изучали ранее, и переосмысливаете его с позиций более опытного разработчика.

Рекомендую сформировать особую систему взглядов на JavaScript (и на разработку в целом): вы никогда не освоите его полностью, но можете (и должны) работать над тем, чтобы приблизиться к этой цели. Этот путь растянется на всю вашу карьеру разработчика и даже дальше.

Вы всегда можете знать JS лучше, чем сейчас. Надеюсь, именно эту мысль передают книги серии YDKJSY.

Миссия

На самом деле не нужно обосновывать, почему разработчики должны относиться к JS серьезно, — думаю, язык уже доказал, что заслуживает статуса первоклассного среди языков программирования.

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

Я обучал более 5000 разработчиков из групп и компаний по всему миру более чем в 25 странах на шести континентах. Мне часто приходилось видеть, что главным фактором считается только результат программы, а не то, как программа написана или как/почему она работает.

Мой опыт не только как разработчика, но и как преподавателя говорит мне: вы всегда можете повысить эффективность своего труда, если четко будете понимать, как работает ваш код (а не просто добиваться того, чтобы он выдавал желаемый результат).

Иначе говоря, «код достаточно хорош, чтобы работать» — не то же самое, что «код  достаточно хорош» (и не должно быть тем же самым).

Всем разработчикам постоянно приходится мучиться с каким-нибудь блоком кода, который по неизвестной причине работает неправильно. Но слишком часто разработчики JS обвиняют язык, вместо того чтобы винить себя за нехватку понимания. Эти книги служат вопросом и ответом: почему произошло именно это и как нужно действовать, чтобы произошло вот это.

Моя миссия — дать возможность каждому разработчику JS полностью контролировать написанный им код, понять его и программировать сознательно и ясно.

Путь

Некоторые из вас начали читать эту книгу с целью изучить все шесть книг от начала и до конца.

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

Мой совет: не торопитесь. Возьмите одну главу, прочитайте ее полностью от начала до конца, потом вернитесь и перечитайте раздел за разделом. Разберите код и идеи в каждом разделе. Если вы столкнетесь с чем-то сложным, лучше провести несколько дней за усвоением, повторным чтением и тренировками, а потом продолжить изучение.

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

Не читайте эти книги взахлеб; будьте терпеливы. Чередуйте чтение с практикой: применяйте знания в рабочих задачах или собственных проектах. Оспаривайте мои идеи, возражайте, а самое главное — не соглашайтесь со мной! Организуйте учебную группу или клуб. Проводите мини-семинары в своем офисе. Пишите посты о прочитанном. Обсудите эти темы на локальных встречах JS.

Моя цель не навязать вам свое мнение. Скорее я хочу выработать у вас собственное мнение и умение его отстаивать. Вы не сможете достичь этой цели скоростным чтением. На это уйдет немало времени. Вы будете двигаться вперед шаг за шагом, пока изучаете, размышляете и возвращаетесь к прочитанному. Эти книги были задуманы как путеводители по JavaScript от вашего текущего местонахождения в знаниях о языке до точки более глубокого понимания. А теперь самая интересная часть: чем глубже вы понимаете JS, тем больше вопросов у вас появится и тем больше придется изучать!

Я очень рад, что вы отправляетесь в путешествие, и для меня большая честь, что вы сочли мои книги достойными своего внимания и решили довериться им. Пришло время начать изучение JS!

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информа­цию о наших книгах.

1. Что такое JavaScript?

Вы пока еще не знаете JS. Я его тоже не знаю (по крайней мере, полностью)… И никто не знает. Но все мы можем хотя бы начать работать над тем, чтобы узнать его лучше.

В главе 1 мы постараемся заложить основу для дальнейшего движения вперед. Мы начнем с рассмотрения разных малозаметных, но важных подробностей, а заодно развеем некоторые мифы и ошибочные представления о том, чем в действительности является язык (и чем он не является!).

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

О книге