未验证 提交 f6a90519 编写于 作者: K Kyle Simpson 提交者: GitHub

Merge pull request #1720 from AMashoshyna/2ed-uk

add book 1 translation into Ukrainian, closes #1719
# You Don't Know JS Yet (book series) - 2nd Edition
# Серія книг "Ти поки що не знаєш JS". Друге видання
This is a series of books diving deep into the core mechanisms of the JavaScript language. This is the **second edition** of the book series:
Це серія книг, що заглиблюються в основні механізми мови JavaScript. Це **друге видання** серії книг:
<a href="https://leanpub.com/ydkjsy-get-started"><img src="get-started/images/cover.png" width="75"></a>&nbsp;&nbsp;
<a href="https://leanpub.com/ydkjsy-scope-closures"><img src="scope-closures/images/cover.png" width="75"></a>&nbsp;&nbsp;...
**To read more about the motivations and perspective behind this book series, check out the [Preface](preface.md).**
**Щоб дізнатись більше про мотивацію та перспективи цієї серії книг, перегляньте [Передмову](preface.md).**
If you're looking for the previous **first edition** books, [they can be found here](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md).
Якщо вам потрібні книги попереднього **першого видання**, [ви знайдете їх тут](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md).
## Premier Sponsor
## Основний спонсор
This edition of the **YDKJS** book series is exclusively sponsored by [Frontend Masters](https://frontendmasters.com).
Це видання серії книг **YDKJS** фінансується виключно [Frontend Masters](https://frontendmasters.com).
Frontend Masters is the gold standard for top-of-the-line expert training material in frontend-oriented software development. With over 150 courses on all things frontend, this should be your first and only stop for quality video training on HTML, CSS, JS, and related technologies.
Frontend Masters – золотий стандарт найсучасніших експертних навчальних матеріалів для фахівців з розробки програмного забезпечення у сфері фронтенду. Frontend Masters має понад 150 курсів з різноманітних тем, що стосуються фронтенду, і має бути вашою першою і єдиною зупинкою у пошуку якісних навчальних відеоматеріалів з HTML, CSS, JS та суміжних технологій.
----
I teach [all my workshops](https://frontendmasters.com/kyle-simpson) exclusively through Frontend Masters. If you like this book content, please check out my video training courses.
Я викладаю [усі свої семінари](https://frontendmasters.com/kyle-simpson) виключно через платформу Frontend Masters. Якщо вам подобається вміст цієї книги, перегляньте мої навчальні відеокурси.
I want to extend a warm and deep thanks to Marc Grabanski and the entire Frontend Masters team, not only for their excellent work with the video training platform, but for their unwavering support of me and of the "You Don't Know JS" books!
Я хочу висловити теплу та глибоку подяку Марку Грабанські(Marc Grabanski) та всій команді Frontend Masters не тільки за їх прекрасну роботу над відеотренінговою платформою, але і за їхню непохитну підтримку мені та книгам "Ти не знаєш JS"!
----
## Titles
## Книги
I recommend reading the **second edition** books in this order:
Я рекомендую читати книги **другого видання** в такому порядку:
* [Get Started](get-started/README.md) | [Buy on Leanpub](https://leanpub.com/ydkjsy-get-started) | [Buy on Amazon](https://www.amazon.com/dp/B084BNMN7T)
* [Scope & Closures](scope-closures/README.md) | [Buy on Leanpub](https://leanpub.com/ydkjsy-scope-closures) | [Buy on Amazon](https://www.amazon.com/dp/B08634PZ3N)
* Objects & Classes (not yet started)
* Types & Grammar (not yet started)
* Sync & Async (not yet started)
* ES.Next & Beyond (not yet started)
* [Get Started](get-started/README.md) | [Купити на Leanpub](https://leanpub.com/ydkjsy-get-started) | [Купити на Amazon](https://www.amazon.com/dp/B084BNMN7T)
* [Області видимості та замикання](scope-closures/README.md) | [Купити на Leanpub](https://leanpub.com/ydkjsy-scope-closures) | [Купити на Amazon](https://www.amazon.com/dp/B08634PZ3N)
* Об'єкти та класи (роботу ще не розпочато)
* Типи і граматики (роботу ще не розпочато)
* Sync & Async (роботу ще не розпочато)
* ES.Next і далі (роботу ще не розпочато)
If you're looking for the previous **first edition** books, [they can be found here](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md).
Якщо вам потрібні книги попереднього **першого видання**, [ви знайдете їх тут](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md).
## Publishing
## Публікації
As always, you'll be able to read these books online here entirely for free.
Як завжди, ви зможете читати ці книги тут онлайн абсолютно безкоштовно.
This edition of the books is being self-published through [GetiPub](https://geti.pub) publishing. The published books will be made available for sale through normal book retail sources.
Це видання книжок надруковано у видавництві [GetiPub](https://geti.pub). Видані книги будуть доступні для купівлі через звичайні джерела роздрібної торгівлі книгами.
If you'd like to contribute financially towards the effort (or any of my other OSS efforts) aside from purchasing the published books, please consider these options:
Якщо ви хочете підтримати фінансово цей проєкт (або будь-які інші мої зусилля з розробки OSS), окрім придбання опублікованих книг, розгляньте наступні варіанти:
* [Github Sponsorship](https://github.com/users/getify/sponsorship)
* [Спонсорство на Github](https://github.com/users/getify/sponsorship)
* [Patreon](https://www.patreon.com/getify)
* [Paypal](https://www.paypal.me/getify)
## Contributions
## Участь у проєкті
Please feel free to contribute to the quality of this content by submitting PRs for improvements to code snippets, explanations, etc. While typo fixes are welcomed, they will likely be caught through normal editing/publishing processes, **so please don't worry about them right now.**
Будь ласка, не соромтеся робити внесок у якість вмісту цього репозиторію, надсилаючи пулреквести для вдосконалення фрагментів коду, пояснень тощо. Хоча виправлення типографічних помилок вітаються, такі помилки, швидше за все, будуть виправлені під час редагування та публікації, тому, будь ласка, **не турбуйтеся про них прямо зараз.**
Any contributions you make to this effort **are of course greatly appreciated**.
Звичайно, ми **дуже вдячні** за будь-який внесок, який ви зробите у цей проєкт.
But **PLEASE** read the [Contributions Guidelines](CONTRIBUTING.md) carefully before submitting a PR.
Однак, **БУДЬ ЛАСКА**, прочитайте уважно [вказівки щодо участі у проєкті](CONTRIBUTING.md) перед відкриттям пулреквестів.
## License & Copyright
## Ліцензія та авторське право
The materials herein are all &copy; 2019-2020 Kyle Simpson.
Права на усі матеріали, наведені в цьому репозиторії, належать Кайлу Сімпсону. &copy; 2019-2020
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a><br />Робота ліцензована за ліцензією <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License</a>.
# You Don't Know JS Yet: Get Started - 2nd Edition
# Серія "Ти поки що не знаєш JS". Книга 1: "Перші кроки". Друге видання
<img src="images/cover.png" width="300">
-----
**[Purchase ebook/PDF from Leanpub](https://leanpub.com/ydkjsy-get-started)**
**[Купити ebook чи PDF на Leanpub](https://leanpub.com/ydkjsy-get-started)**
-----
[Table of Contents](toc.md)
[Зміст](toc.md)
* [Foreword](foreword.md) (by [Brian Holt](https://twitter.com/holtbt))
* [Preface](../preface.md)
* [Chapter 1: What Is JavaScript?](ch1.md)
* [Chapter 2: Surveying JS](ch2.md)
* [Chapter 3: Digging to the Roots of JS](ch3.md)
* [Chapter 4: The Bigger Picture](ch4.md)
* [Appendix A: Exploring Further](apA.md)
* [Appendix B: Practice, Practice, Practice!](apB.md)
* [Передмова](foreword.md) (від [Брайана Голта](https://twitter.com/holtbt))
* [Вступ](../preface.md)
* [Глава 1: Що таке JavaScript?](ch1.md)
* [Глава 2: Огляд JS](ch2.md)
* [Глава 3: Шлях до самого коріння JS](ch3.md)
* [Глава 4: Загальна картина мови](ch4.md)
* [Додаток A: Продовжуємо дослідження](apA.md)
* [Додаток B: Прийшов час практики!](apB.md)
此差异已折叠。
# You Don't Know JS Yet: Get Started - 2nd Edition
# Appendix B: Practice, Practice, Practice!
# Серія "Ти поки що не знаєш JS". Книга 1: "Перші кроки". Друге видання
# Додаток B: Прийшов час практики!
In this appendix, we'll explore some exercises and their suggested solutions. These are just to *get you started* with practice over the concepts from the book.
У цьому додатку ми розглянемо деякі вправи та запропоновані нами рішення. Ці вправи допоможуть вам *розпочати* застосовувати ідеї з цієї книги на практиці.
## Practicing Comparisons
## Вправа на порівняння
Let's practice working with value types and comparisons (Chapter 4, Pillar 3) where coercion will need to be involved.
Потренуємось працювати з типами значень та порівняннями (Глава 4, Опора 3), де потрібно буде залучити приведення типів.
`scheduleMeeting(..)` should take a start time (in 24-hour format as a string "hh:mm") and a meeting duration (number of minutes). It should return `true` if the meeting falls entirely within the work day (according to the times specified in `dayStart` and `dayEnd`); return `false` if the meeting violates the work day bounds.
Функція `scheduleMeeting(..)` очікує час початку роботи (у 24-годинному форматі у вигляді рядка "hh:mm") та тривалість зустрічі (кількість хвилин). Вона повинна повернути `true`, якщо зустріч повністю потрапляє в межі робочого дня (відповідно до часу, зазначеного в `dayStart` і `dayEnd`) та повернути `false`, якщо зустріч виходить за межі робочого дня.
```js
const dayStart = "07:30";
......@@ -26,13 +26,13 @@ scheduleMeeting("17:30",30); // false
scheduleMeeting("18:00",15); // false
```
Try to solve this yourself first. Consider the usage of equality and relational comparison operators, and how coercion impacts this code. Once you have code that works, *compare* your solution(s) to the code in "Suggested Solutions" at the end of this appendix.
Спочатку спробуйте виконати це завдання самостійно. Рекомендуємо згадати про оператори рівності та оператори відносного порівняння та про можливий вплив приведення типів на цей код. Коли отримаєте код, що працює, *порівняйте* свої рішення з кодом у "Пропонованих рішеннях" в кінці цього додатка.
## Practicing Closure
## Вправа з використання замикань
Now let's practice with closure (Chapter 4, Pillar 1).
Тепер потренуємось у використанні замикань (Глава 4, Опора 1).
Функція `range(..)` приймає першим аргументом число, що представляючи перше число у бажаному діапазоні чисел. Другий аргумент – це також число, що представляє кінець бажаного діапазону (включно). Якщо другий аргумент опущено, слід повернути іншу функцію, яка очікує цей аргумент.
The `range(..)` function takes a number as its first argument, representing the first number in a desired range of numbers. The second argument is also a number representing the end of the desired range (inclusive). If the second argument is omitted, then another function should be returned that expects that argument.
```js
function range(start,end) {
......@@ -53,19 +53,19 @@ start3(0); // []
start4(6); // [4,5,6]
```
Try to solve this yourself first.
Спочатку спробуйте виконати це завдання самостійно.
Once you have code that works, *compare* your solution(s) to the code in "Suggested Solutions" at the end of this appendix.
Коли отримаєте код, що працює, *порівняйте* свої рішення з кодом у "Пропонованих рішеннях" в кінці цього додатка.
## Practicing Prototypes
## Вправа з використання прототипів
Finally, let's work on `this` and objects linked via prototype (Chapter 4, Pillar 2).
Насамкінець попрацюємо над `this` та об'єктами, пов'язаними через прототип (Глава 4, Опора 2).
Define a slot machine with three reels that can individually `spin()`, and then `display()` the current contents of all the reels.
Визначте ігровий автомат з трьома барабанами, які можуть крутитися окремо один від одного (метод `spin()`), а потім показати поточний вміст усіх барабанів (`display()`).
The basic behavior of a single reel is defined in the `reel` object below. But the slot machine needs individual reels—objects that delegate to `reel`, and which each have a `position` property.
Основна поведінка одного барабана визначена в об'єкті `reel` нижче. Але ігровому автомату потрібні окремі барабани - об'єкти, які делегують до `reel` і кожна з яких має властивість "position".
A reel only *knows how* to `display()` its current slot symbol, but a slot machine typically shows three symbols per reel: the current slot (`position`), one slot above (`position - 1`), and one slot below (`position + 1`). So displaying the slot machine should end up displaying a 3 x 3 grid of slot symbols.
Сам барабан вміє показувати *тільки* символ поточного слота (`display()`), проте ігровий автомат зазвичай показує три символи на кожному барабані: поточний слот (`position`), один слот вище (`position - 1`) і один слот нижче поточного (`position + 1`). Отже, ігровий автомат має показати сітку символів розміром 3 x 3.
```js
function randMax(max) {
......@@ -98,8 +98,8 @@ var reel = {
var slotMachine = {
reels: [
// this slot machine needs 3 separate reels
// hint: Object.create(..)
// цей автомат потребує трьох окремих барабанів
// підказка: Object.create(..)
],
spin() {
this.reels.forEach(function spinReel(reel){
......@@ -124,23 +124,23 @@ slotMachine.display();
// ☺ | ♦ | ★
```
Try to solve this yourself first.
Спробуйте спочатку вирішити це завдання самостійно.
Hints:
Підказки:
* Use the `%` modulo operator for wrapping `position` as you access symbols circularly around a reel.
* Використовуйте оператор ділення з остачею `%` для обертання `position`, коли ви посилаєтеся на символи навколо барабана.
* Use `Object.create(..)` to create an object and prototype-link it to another object. Once linked, delegation allows the objects to share `this` context during method invocation.
* Використовуйте `Object.create(..)`, щоб створити об'єкт і зв'язати його прототипом з іншим об'єктом. Після зв’язку делегування дозволяє об’єктам обмінюватися контекстом `this` під час виклику методу.
* Instead of modifying the reel object directly to show each of the three positions, you can use another temporary object (`Object.create(..)` again) with its own `position`, to delegate from.
* Замість того безпосередньої модифікації об'єкту барабану, щоб показати кожну з трьох позицій, ви можете використовувати інший тимчасовий об'єкт (`Object.create(..)` знову стане в пригоді) зі своїм `position` для делегування.
Once you have code that works, *compare* your solution(s) to the code in "Suggested Solutions" at the end of this appendix.
Коли отримаєте код, що працює, *порівняйте* свої рішення з кодом у "Пропонованих рішеннях" в кінці цього додатка.
## Suggested Solutions
## Пропоновані рішення
Keep in mind that these suggested solutions are just that: suggestions. There's many different ways to solve these practice exercises. Compare your approach to what you see here, and consider the pros and cons of each.
Майте на увазі, що ці запропоновані рішення – це просто пропозиції. Існує багато різних способів виконати ці практичні вправи. Порівняйте свій підхід з тим, що ви бачите тут, і розгляньте плюси і мінуси кожного з підходів.
Suggested solution for "Comparisons" (Pillar 3) practice:
Запропоноване рішення для практики "Порівняння" (Опора 3):
```js
const dayStart = "07:30";
......@@ -172,8 +172,8 @@ function scheduleMeeting(startTime,durationMinutes) {
meetingEndMinutes - 60;
}
// re-compose fully-qualified time strings
// (to make comparison easier)
// збираємо повні рядкові представлення часу
// (щоб спростити порівняння)
let meetingStart = `${
meetingStartHour.padStart(2,"0")
}:${
......@@ -185,10 +185,10 @@ function scheduleMeeting(startTime,durationMinutes) {
String(meetingEndMinutes).padStart(2,"0")
}`;
// NOTE: since expressions are all strings,
// comparisons here are alphabetic, but it's
// safe here since they're fully qualified
// time strings (ie, "07:15" < "07:30")
// ПРИМІТКА: через те, що усі вирази це рядки,
// порівняння проходить за алфавітом, але в цьому but it's
// випадку це безпечно, бо це повні значення часу
// (тобто, "07:15" < "07:30")
return (
meetingStart >= dayStart &&
meetingEnd <= dayEnd
......@@ -209,7 +209,7 @@ scheduleMeeting("18:00",15); // false
----
Suggested solution for "Closure" (Pillar 1) practice:
Пропоноване рішення для практики "Замикання" (Опора 1):
```js
function range(start,end) {
......@@ -253,7 +253,7 @@ start4(6); // [4,5,6]
----
Suggested solution for "Prototypes" (Pillar 2) practice:
Пропоноване рішення для практики "Прототипи" (Опора 2):
```js
function randMax(max) {
......@@ -298,7 +298,7 @@ var slotMachine = {
display() {
var lines = [];
// display all 3 lines on the slot machine
// показати усі 3 лінії ігнового автомата
for (
let linePos = -1; linePos <= 1; linePos++
) {
......@@ -333,4 +333,4 @@ slotMachine.display();
// ☺ | ♦ | ★
```
That's it for this book. But now it's time to look for real projects to practice these ideas on. Just keep coding, because that's the best way to learn!
Ця книга дійшла кінця. Настав час шукати реальні проекти, на яких можна практикувати ідеї з неї. Продовжуйте писати код, бо це найкращий спосіб вчитися!
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# You Don't Know JS Yet: Get Started - 2nd Edition
# Foreword
# Серія "Ти поки що не знаєш JS". Книга 1: "Перші кроки". Друге видання
# Передмова
The first time I saw a tweet advertising the crowdfunding campaign for the original book series *You Don't Know JS*, I thought to myself that whoever the hell this Kyle Simpson is can get bent. Of course I know JavaScript! At the time I had been working in JavaScript for many years with some of tech's biggest names, so I felt justified in looking down my nose at this sweeping claim.
Коли я вперше побачив твіт про збір коштів на перше видання серії книг *Ти не знаєш JS*, я подумав собі, що хто б не був той Кайл Сімпсон, він помиляється. Авжеж, я знаю JavaScript! На той час я вже багато років працював з JavaScript на найвідоміші компанії у світі технологій, тому вважав, що можу подивитися звисока на це сміливе твердження.
Once the funding for the book completed, I observed that a lot of people were really excited to read this book series and I decided to go ahead and give it a shot—you know, just to show everyone that I *do know* JavaScript. Once I dug in and poured over the texts, I experienced a profound mix of learning, surprise, and even a little anger. Kyle has a knack for saying something that challenges my world view and making me think about it until I realize what he said was actually true (I'll never admit this to him though!).
Після завершення краудфандингової компанії я помітив, що багато людей були дуже задоволені цією серією і вирішив дати їй шанс. Знаєте, просто щоб показати всім, що звісно *знаю* JavaScript. Поглибившись у текст, я відчув глибоке поєднання пізнання, здивування і навіть певного гніву. Кайл має хист сказати щось, що кидає виклик моєму світогляду, і змусити мене думати про це, аж поки я не зрозумію, що він насправді мав на увазі. Щоправда, йому я в цьому ніколи не зізнаюся!
So it turned out I didn't know JavaScript. I didn't know why I had adopted certain patterns; I didn't know why JavaScript behaves the way it does in certain situations, and I didn't know much of the nuance of the languages that I assumed I did. Many were things I didn't know I didn't know, and I was worse off as a developer for it.
Так виявилось, що я не знав JavaScript. Я не знав, чому обирав певні шаблони; не знав, чому JavaScript поводиться саме так, як поводиться, у певних ситуаціях, не знав багато нюансів мов, які гадав, що знаю. Багато було такого, про що я навіть не знав, що я того не знаю, і мені як розробнику було ще гірше.
This is what this book series is great for. It's not just for someone picking up the language for the first time (though it's for them, too); it's for all software craftspeople who want to master their tools, who want to understand the ins and outs of their trade, and who want to select the proper methods for solving problems.
Саме для цього чудово підходить ця серія книг. Вона не лише для тих, хто вперше береться за мову (хоча і для них теж); вона для всіх майстрів побудови програмного забезпечення, які хочуть краще опанувати свої інструменти, зрозуміти тонкощі своєї справи та навчитися вибирати належні методи для розв'язання проблем.
The thing I appreciate about Kyle and his work is that he is delightfully uninfluenced by the zeitgeist of the programming world around him. That isn't to say he isn't aware of what's happening in the community but rather that it doesn't sway his pursuit of the best answers to the correct questions. This often has put him at odds with the latest "best practices," but in reality this is exactly what you need: a perspective removed from temporal influence and simply speaking to the underlying truth. That's why this series is so good. The first edition of *You Don't Know JS* is still accurate, years later! Not many things stand this test of time given the shifting sands of the JavaScript landscape.
Понад усе я ціную у Кайлі та його роботі те, що він дивовижним чином уникає впливу духу часу (Zeitgeist) навколишнього світу програмування. Це не означає, що він не обізнаний про те, що відбувається в спільноті, але це не заважає його пошуку кращих відповідей на вірні запитання. Часто це приводить до розбіжностей між його думкою та "найкращим практикам" на часі, але насправді це саме те, що вам потрібно: перспектива, відсторонена від впливу часу, і просто промовляння до основної істини. Тому ця серія така гарна. Перше видання *Ви не знаєте JS* лишається адекватним, хоча після видання минули роки! Не багато речей витримують таку перевірку часом, враховуючи мінливі піски ландшафту JavaScript.
Let's talk a moment about this first book itself, *Get Started*. You may be tempted to skip it as you may think that you already have "gotten started," but it's worth reading this one! You'd be surprised how much depth, nuance, and oddity there is in the underlying building blocks of JavaScript, and it's quite essential for you to grapple with these underpinnings before venturing forward into the constructs of the language. It's exactly the sort of foundation you need, to really know JavaScript.
Давайте трохи поговоримо про першу книгу серії, *Перші кроки*. У вас може виникнути спокуса пропустити її, оскільки вам здається, що ви вже "розпочали", але її варто прочитати! Ви будете здивовані дізнатися, скільки глибини, тонкощів та дивацтв міститься у фундаменті JavaScript, і дуже важливо опанувати це підґрунтя, перш ніж переходити до конструкцій мови. Це саме ті основи, які вам потрібні, щоб справді знати JavaScript.
So, do your future self a favor and dig into this book and unlock the knowledge within. These solid foundations will serve you better than any framework ever will; those come and go but we'll still be writing JavaScript itself for decades to come. Keep an open mind and challenge your preconceived notions.
Отже, зробіть собі майбутньому ласку і пориньте у цю книгу та розкрийте знання. Ці міцні основи слугуватимуть вам краще, ніж будь-який фреймворк; фреймворки приходять і йдуть, а на JavaScript ми ще писатимемо десятиліттями. Будьте відкритими й киньте виклик своїм заздалегідь прийнятим уявленням.
Because, as I found out myself, you probably don't know JavaScript (yet).
Тому що, як я сам з'ясував, мабуть, ви ще не знаєте JavaScript.
Brian Holt<br>
Senior Program Manager<br>
Visual Studio Code and Node.js on Azure<br>
Брайан Голт<br>
Старший програмний менеджер<br>
Visual Studio Code та Node.js на Azure<br>
Microsoft
# You Don't Know JS Yet: Get Started - 2nd Edition
# Серія "Ти поки що не знаєш JS". Книга 1: "Перші кроки". Друге видання
## Table of Contents
## Зміст
* Foreword
* Preface
* Chapter 1: What Is JavaScript?
* About This Book
* What's With That Name?
* Language Specification
* Many Faces
* Backwards & Forwards
* What's in an Interpretation?
* Strictly Speaking
* Defined
* Chapter 2: Surveying JS
* Each File is a Program
* Values
* Declaring and Using Variables
* Functions
* Comparisons
* How We Organize in JS
* The Rabbit Hole Deepens
* Chapter 3: Digging To The Roots Of JS
* Iteration
* Closure
* `this` Keyword
* Prototypes
* Asking "Why?"
* Chapter 4: The Bigger Picture
* Pillar 1: Scope and Closure
* Pillar 2: Prototypes
* Pillar 3: Types and Coercion
* With the Grain
* In Order
* Appendix A: Exploring Further
* Values vs. References
* So Many Function Forms
* Coercive Conditional Comparison
* Prototypal "Classes"
* Appendix B: Practice, Practice, Practice!
* Practicing Comparisons
* Practicing Closure
* Practicing Prototypes
* Suggested Solutions
* Передмова
* Вступ
* Глава 1: Що таке JavaScript?
* Про цю книгу
* А що з назвою?
* Специфікація мови
* Мова з багатьма обличчями
* Пряма та зворотна сумісність
* А що там з інтерпретацією?
* Строго кажучи
* Визначення
* Глава 2: Огляд JS
* Кожний файл – це програма
* Значення
* Оголошення та використання значень
* Функції
* Порівняння
* Як ми організуємо код в JS
* Кроляча нора стає все глибшою
* Глава 3: Шлях до самого коріння JS
* Ітерація
* Замикання
* Ключове слово `this`
* Прототипи
* Про важливість питання "Чому так?"
* Глава 4: Загальна картина мови
* Опора №1: Області видимості та замикання
* Опора №2: Прототипи
* Опора №3: Типи та приведення типів
* Згідно природі мови
* По черзі
* Додаток A: Продовжуємо дослідження
* Значення та посилання: в чому різниця
* Так багато видів функцій
* Умовне порівняння із приведенням типів
* Прототипні "класи"
* Додаток B: Прийшов час практики!
* Вправа на порівняння
* Вправа з використання замикань
* Вправа з використання прототипів
* Пропоновані рішення
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册