From 49fbfdc45ab2b374bff28912f2b75c288164f122 Mon Sep 17 00:00:00 2001 From: Yuriy Ostapyuk Date: Wed, 8 May 2019 16:15:21 +0300 Subject: [PATCH 1/8] saving progress --- 1-js/02-first-steps/05-types/article.md | 133 ++++++++++++------------ figures.sketch | Bin 5357168 -> 5357084 bytes 2 files changed, 67 insertions(+), 66 deletions(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index f81705005..dc011918b 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -1,134 +1,136 @@ -# Data types +# Типи даних -A variable in JavaScript can contain any data. A variable can at one moment be a string and at another be a number: +Змінна в JavaScript може містити будь-які дані. Змінна може в один момент бути рядком, а в інший - числом: ```js -// no error -let message = "hello"; +// тут не буде помилки +let message = "привіт"; message = 123456; ``` -Programming languages that allow such things are called "dynamically typed", meaning that there are data types, but variables are not bound to any of them. +Мова програмування, яка дозволяє таке робити називається "динамічно типізованою", маючи на увазі, що є типи даних, але змінні не прив'язанні до жодного типу. -There are seven basic data types in JavaScript. Here, we'll cover them in general and in the next chapters we'll talk about each of them in detail. +Існує сім базових типів в JavaScript. У цьому розділі ми розглянемо їх поверхнево, але в наступних розлянемо кожен більш детально. -## A number +## Число (number) ```js let n = 123; n = 12.345; ``` -The *number* type represents both integer and floating point numbers. +Тип _number_ представляє і цілі числа і числа з плаваючою точкою. -There are many operations for numbers, e.g. multiplication `*`, division `/`, addition `+`, subtraction `-`, and so on. +Існує багато операцію, що можна робити с числами, наприклад, множення `*`, ділення `/`, додавання `+`, віднімання `-`, тощо. -Besides regular numbers, there are so-called "special numeric values" which also belong to this data type: `Infinity`, `-Infinity` and `NaN`. +Окрім звичайних чисел, також існують так звані "спеціальні числові значення", що також мають відношення до цього типу даних: `Infinity`, `-Infinity` and `NaN`. -- `Infinity` represents the mathematical [Infinity](https://en.wikipedia.org/wiki/Infinity) ∞. It is a special value that's greater than any number. +- `Infinity` являє собою математічну [наскінченність](https://uk.wikipedia.org/wiki/%D0%9D%D0%B5%D1%81%D0%BA%D1%96%D0%BD%D1%87%D0%B5%D0%BD%D0%BD%D1%96%D1%81%D1%82%D1%8C) ∞. Це спеціальний тип, що є більшим за будь-яке число. - We can get it as a result of division by zero: + Ми можемо отримати його як результат ділення на нуль: - ```js run - alert( 1 / 0 ); // Infinity - ``` + ```js run + alert(1 / 0); // Infinity + ``` - Or just reference it directly: + Або просто безпосередньо посилатися на нього: - ```js run - alert( Infinity ); // Infinity - ``` -- `NaN` represents a computational error. It is a result of an incorrect or an undefined mathematical operation, for instance: + ```js run + alert(Infinity); // Infinity + ``` - ```js run - alert( "not a number" / 2 ); // NaN, such division is erroneous - ``` +- `NaN` являє собою помилку обчислення. Це є результат неправильної або невизначеної математичної операції, наприклад: - `NaN` is sticky. Any further operation on `NaN` returns `NaN`: + ```js run + alert("not a number" / 2); // NaN, таке ділення є помилковим + ``` - ```js run - alert( "not a number" / 2 + 5 ); // NaN - ``` + `NaN` є "стійким" (постійним). Будь-які наступні операції з `NaN` будуть повертати `NaN`: - So, if there's a `NaN` somewhere in a mathematical expression, it propagates to the whole result. + ```js run + alert("not a number" / 2 + 5); // NaN + ``` -```smart header="Mathematical operations are safe" -Doing maths is "safe" in JavaScript. We can do anything: divide by zero, treat non-numeric strings as numbers, etc. + Таким чином, якщо є `NaN` десь у математичному виразі, він пошірюватиметься на весь результат. -The script will never stop with a fatal error ("die"). At worst, we'll get `NaN` as the result. +```smart header="Математичні операції є безпечними" +Обчислювання є "безпечним" в JavaScript. Ми можемо робити будь-що: діління на нуль, звертатися до нечислової строки як до числа, тощо. + +Виконання скрипта ніколи не зупиниться з фатальною помилкою ("die"). У гіршому випадку ми отримаємо у результаті `NaN`. ``` -Special numeric values formally belong to the "number" type. Of course they are not numbers in the common sense of this word. +Спеціальні числові значення формально належать до типу "number". Хоча, звісно, вони не є числами у загальноприйнятому розумінні. -We'll see more about working with numbers in the chapter . +Докладніше роботу с числами ми розглянемо у розділі . -## A string +## Строка (string) -A string in JavaScript must be surrounded by quotes. +Строка у JavaScript повинна бути оточенна лапками. ```js -let str = "Hello"; -let str2 = 'Single quotes are ok too'; -let phrase = `can embed ${str}`; +let str = "Привіт"; +let str2 = "Одинарні лапки також дозволяються"; +let phrase = `так можна вставляти ${str}`; ``` -In JavaScript, there are 3 types of quotes. +В JavaScript існує три типу лапок. -1. Double quotes: `"Hello"`. -2. Single quotes: `'Hello'`. -3. Backticks: `Hello`. +1. Подвійні лапки: `"Привіт"`. +2. Одинарні липки: `'Привіт'`. +3. Зворотні лапки: `Привіт`. -Double and single quotes are "simple" quotes. There's no difference between them in JavaScript. +Подвійні та одинарні лапки є "звичайними". Тобто немає ніякої різниці, які саме використовувати. -Backticks are "extended functionality" quotes. They allow us to embed variables and expressions into a string by wrapping them in `${…}`, for example: +Зворотні лапки є "розширеною функціональністю". Вони дозволяють вбудовувати змінні та вирази в строку, обрамляючи їх `${…}`, наприклад: ```js run -let name = "John"; +let name = "Джон"; -// embed a variable -alert( `Hello, *!*${name}*/!*!` ); // Hello, John! +// вбудована змінна +alert(`Привіт, *!*${name}*/!*!`); // Привіт, Джон! -// embed an expression -alert( `the result is *!*${1 + 2}*/!*` ); // the result is 3 +// вбудований вираз +alert(`результат *!*${1 + 2}*/!*`); // результат 3 ``` -The expression inside `${…}` is evaluated and the result becomes a part of the string. We can put anything in there: a variable like `name` or an arithmetical expression like `1 + 2` or something more complex. +Вираз всередені `${…}` обчислюється, а результат обчислення стає частиною строки. Ми можемо вбудовувати будь-що: змінну `name`, або арифметичний вираз `1 + 2`, або щось набагато складніше. + +Будь ласка, зауважте, що вбудовування можно робити тільки зі зворотніми лапками. Інші типи лапків не мають функціональності вбудовування! -Please note that this can only be done in backticks. Other quotes don't have this embedding functionality! ```js run -alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (double quotes do nothing) +alert("результат ${1 + 2}"); // результат ${1 + 2} (подвійні лапки не мають ніякого впливу) ``` -We'll cover strings more thoroughly in the chapter . +Більш ретельно ми будемо висвітлювати рядки у главі . -```smart header="There is no *character* type." -In some languages, there is a special "character" type for a single character. For example, in the C language and in Java it is `char`. +```smart header="Не існує типу *символ* (*character*)." +У деяких мовах існує спеціальний тип "character" для позначення єдіного символу. Наприклад, в мовах C та Java це `char`. -In JavaScript, there is no such type. There's only one type: `string`. A string may consist of only one character or many of them. +В JavaScript не існує такого типу. Є єдиний тип: `string`. В свою чергу строка може містити лише один символ або багато. ``` -## A boolean (logical type) +## Логічний тип (boolean) -The boolean type has only two values: `true` and `false`. +Логічний тип може приймати лише два значення: `true` та `false`. -This type is commonly used to store yes/no values: `true` means "yes, correct", and `false` means "no, incorrect". +Цей тип зазвичай використовується для зберігання значень так/ні: `true` означає "так, вірно", а `false` означає "ні, не вірно". -For instance: +Наприклад: ```js -let nameFieldChecked = true; // yes, name field is checked -let ageFieldChecked = false; // no, age field is not checked +let nameFieldChecked = true; // так, ім'я було перевірене +let ageFieldChecked = false; // ні, вік не був перевірен ``` -Boolean values also come as a result of comparisons: +Логічне значення також можна отримати як результат порівняння: ```js run let isGreater = 4 > 1; -alert( isGreater ); // true (the comparison result is "yes") +alert(isGreater); // true (результат порівняння "так") ``` -We'll cover booleans more deeply in the chapter . +Більш глибоко ми охопимо булеві типи у главі . ## The "null" value @@ -223,7 +225,6 @@ The last three lines may need additional explanation: 2. The result of `typeof null` is `"object"`. That's wrong. It is an officially recognized error in `typeof`, kept for compatibility. Of course, `null` is not an object. It is a special value with a separate type of its own. So, again, this is an error in the language. 3. The result of `typeof alert` is `"function"`, because `alert` is a function of the language. We'll study functions in the next chapters where we'll see that there's no special "function" type in JavaScript. Functions belong to the object type. But `typeof` treats them differently. Formally, it's incorrect, but very convenient in practice. - ## Summary There are 7 basic types in JavaScript. diff --git a/figures.sketch b/figures.sketch index c740ac5772b7c4391f0737c21955aa826164fbb9..a50292b70185c49ef9b78785b419c0c1d1a4503d 100644 GIT binary patch delta 705 zcmWN`X-E@b0Ecm0Ub%FdPMuTJm2+O3P3JY2*VJj7I#W#0AWAS%u{7BzmJ2 z^hU<(aa1-OE546;ruEPF1SV_B1~A$38^}tQ9aggJH*&~~&Yn7s8J)v~4s{94rZ%!S z$Hd;;3HA_JRgSm5p;hIiSjQJ3tKc?*M_39asorIwde`~fO`@-Gp-w_y;kq+{XFNCc z5dM91`z6GWUANkPQq;{xQMbE&9x2&$r#vW6lx%Xg9B{$HSz1NVqF1gA^)B2bDW;WN zcR7}{TzxEB=D1xR@Y&!x%OT`@8@}T2q4!uV8LaWaV2$seGW4$c4#*JabE^IOk zCCz;TH1`D^n9x)nT=|J?M~6_M*p3dX%O$0nFqCS9Yq2E5Af!adFodTEpkp(<%7HK} z;b2(Kvai9jSgd7Z_=fn7J3?B;94%5g5g~TC?iZ0>N2YorFx3-zWWiLM#NQUn9TFQ2 z*11tHWJFsSMMXnf81uUhjh|x%t`eRk7CcE@O)+{q<3gpxun-5sg0xeEf{XFb-@uwJ zb1nnBQ6`E;>MPlff=G{KkRF{|k-$rm5avk~sst!hiS|}dXC zOl4Ou9ape=={)--b{v(9@t{?FnH-ENDHWB4gVF5nNIY1}-eZw=b2i$|IVtrpm8*5? E|3>RfdjJ3c delta 884 zcmWlXYeAX$nrM$bTlR(7`$|NckDK)z&nC2@=VWMdk zNwXA7YMAzb8ANzVLujZaM5+0~tjv)Y5N!3|hd;k_e$Vq9&Utz7?~HK`h^}7BVP4cr zr4Knwjc$U~O>jsz!F~0D!_fK4U3s^_cS7EeQ4YiQ>v@P7_3O>ODzTqSv!J;&{qua;YosxeeI?zYn%5Y2YR&4UeTtl-ix$)Z~sBG>+7Tq_Hel!Qp)W(_*V~? zU3jSYJ=|ER58_K>p?>9=*he<_QDlQ`0k>yeM`VaUxsC)R9>7fgNT59ECwa7=GaOGHO+0lBp95!^7PBY@ zSI@+7XHZ*_$o@2Lt=BWcw4 pG`&@hTI@plwl!)BLpmu88Aq>i89`fhp~k5#=7xqxcMCN&n*ZBqQ9S?v From 1f2a63e172d10509c3c3e20ea61699ca643c5aeb Mon Sep 17 00:00:00 2001 From: Yuriy Ostapyuk Date: Thu, 9 May 2019 20:41:57 +0300 Subject: [PATCH 2/8] finished translation --- .../05-types/1-string-quotes/solution.md | 16 ++-- .../05-types/1-string-quotes/task.md | 6 +- 1-js/02-first-steps/05-types/article.md | 94 +++++++++---------- 3 files changed, 58 insertions(+), 58 deletions(-) diff --git a/1-js/02-first-steps/05-types/1-string-quotes/solution.md b/1-js/02-first-steps/05-types/1-string-quotes/solution.md index 68a13c15b..62e98fa2b 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/solution.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/solution.md @@ -1,15 +1,15 @@ -Backticks embed the expression inside `${...}` into the string. +Зворотні лапки вбудовують вираз, що знаходиться у `${...}`, у рядок. ```js run -let name = "Ilya"; +let name = "Ілля"; -// the expression is a number 1 -alert( `hello ${1}` ); // hello 1 +// вираз — число 1 +alert( `привіт ${1}` ); // привіт 1 -// the expression is a string "name" -alert( `hello ${"name"}` ); // hello name +// вираз є рядком "ім'я" +alert( `привіт ${"ім'я"}` ); // привіт ім'я -// the expression is a variable, embed it -alert( `hello ${name}` ); // hello Ilya +// вираз є змінною, вбудовуйте її +alert( `привіт ${name}` ); // привіт Ілля ``` diff --git a/1-js/02-first-steps/05-types/1-string-quotes/task.md b/1-js/02-first-steps/05-types/1-string-quotes/task.md index 14ea6b4d6..12504ee35 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/task.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/task.md @@ -2,12 +2,12 @@ importance: 5 --- -# String quotes +# Лапки у рядках -What is the output of the script? +Який буде результат виконання скріпта? ```js -let name = "Ilya"; +let name = "Ілля"; alert( `hello ${1}` ); // ? diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index dc011918b..99c1e2daa 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -54,7 +54,7 @@ n = 12.345; Таким чином, якщо є `NaN` десь у математичному виразі, він пошірюватиметься на весь результат. ```smart header="Математичні операції є безпечними" -Обчислювання є "безпечним" в JavaScript. Ми можемо робити будь-що: діління на нуль, звертатися до нечислової строки як до числа, тощо. +Обчислювання є "безпечним" в JavaScript. Ми можемо робити будь-що: діління на нуль, звертатися до нечислового рядка як до числа, тощо. Виконання скрипта ніколи не зупиниться з фатальною помилкою ("die"). У гіршому випадку ми отримаємо у результаті `NaN`. ``` @@ -63,9 +63,9 @@ n = 12.345; Докладніше роботу с числами ми розглянемо у розділі . -## Строка (string) +## Рядок (string) -Строка у JavaScript повинна бути оточенна лапками. +Рядок у JavaScript повинна бути оточенна лапками. ```js let str = "Привіт"; @@ -81,7 +81,7 @@ let phrase = `так можна вставляти ${str}`; Подвійні та одинарні лапки є "звичайними". Тобто немає ніякої різниці, які саме використовувати. -Зворотні лапки є "розширеною функціональністю". Вони дозволяють вбудовувати змінні та вирази в строку, обрамляючи їх `${…}`, наприклад: +Зворотні лапки є "розширеною функціональністю". Вони дозволяють вбудовувати змінні та вирази в рядок, обрамляючи їх `${…}`, наприклад: ```js run let name = "Джон"; @@ -93,7 +93,7 @@ alert(`Привіт, *!*${name}*/!*!`); // Привіт, Джон! alert(`результат *!*${1 + 2}*/!*`); // результат 3 ``` -Вираз всередені `${…}` обчислюється, а результат обчислення стає частиною строки. Ми можемо вбудовувати будь-що: змінну `name`, або арифметичний вираз `1 + 2`, або щось набагато складніше. +Вираз всередені `${…}` обчислюється, а результат обчислення стає частиною рядка. Ми можемо вбудовувати будь-що: змінну `name`, або арифметичний вираз `1 + 2`, або щось набагато складніше. Будь ласка, зауважте, що вбудовування можно робити тільки зі зворотніми лапками. Інші типи лапків не мають функціональності вбудовування! @@ -106,7 +106,7 @@ alert("результат ${1 + 2}"); // результат ${1 + 2} (подві ```smart header="Не існує типу *символ* (*character*)." У деяких мовах існує спеціальний тип "character" для позначення єдіного символу. Наприклад, в мовах C та Java це `char`. -В JavaScript не існує такого типу. Є єдиний тип: `string`. В свою чергу строка може містити лише один символ або багато. +В JavaScript не існує такого типу. Є єдиний тип: `string`. В свою чергу рядок може містити лише один символ або багато. ``` ## Логічний тип (boolean) @@ -132,37 +132,37 @@ alert(isGreater); // true (результат порівняння "так") Більш глибоко ми охопимо булеві типи у главі . -## The "null" value +## Значення "null" -The special `null` value does not belong to any of the types described above. +Спеціальне значенна `null` не належить до жодного з описаних вище типів. -It forms a separate type of its own which contains only the `null` value: +Воно формує окремий власний тип який містить значення `null`: ```js let age = null; ``` -In JavaScript, `null` is not a "reference to a non-existing object" or a "null pointer" like in some other languages. +У JavaScript, `null` не є "посиланням на не існуючий об'єкт" або "null показчие" як може бути у інших мовах програмування. -It's just a special value which represents "nothing", "empty" or "value unknown". +Це лише спеціальне значення, яке представляє "нічого", "порожнє" або "невідоме значення". -The code above states that `age` is unknown or empty for some reason. +У наведеному вище коді зазначено, що `age` невідома чи порожня з якоїсь причини. -## The "undefined" value +## Значення "undefined" -The special value `undefined` also stands apart. It makes a type of its own, just like `null`. +Спеціальне значення `undefined` також стоїть окремо. Воно представляє власний тип, подібно до "null". The meaning of `undefined` is "value is not assigned". -If a variable is declared, but not assigned, then its value is `undefined`: +Якщо змінна оголошена, але їй не призначене якесь значення, тоді значення такої змінної буде `undefined`: ```js run let x; -alert(x); // shows "undefined" +alert(x); // показує "undefined" ``` -Technically, it is possible to assign `undefined` to any variable: +Технічно, є така можливість `undefined` to any variable: ```js run let x = 123; @@ -172,28 +172,28 @@ x = undefined; alert(x); // "undefined" ``` -...But we don't recommend doing that. Normally, we use `null` to assign an "empty" or "unknown" value to a variable, and we use `undefined` for checks like seeing if a variable has been assigned. +...Але ми не рекомендуємо так робити. Як правило, ми використовуємо `null`, щоб присвоїти змінній значення "порожнє" або "невідоме", і ми викроистовуємо `undefined` для перевірок, як, наприклад, перевірка чи було змінній присвоєне значення. -## Objects and Symbols +## Об'єкти та Символи -The `object` type is special. +Тип `object` є особливим типом. -All other types are called "primitive" because their values can contain only a single thing (be it a string or a number or whatever). In contrast, objects are used to store collections of data and more complex entities. We'll deal with them later in the chapter after we learn more about primitives. +Всі інші типи називаються "примітивами", тому що їх значення можуть містити тільки один елемент (це може бути рядок, або число, або будь-що інше). Навпаки, об'єкти використовуються для зберігання колекцій даних і більш складних об'єктів. Ми розглянемо їх пізніше у розділі після того, як ми дізнаємося більше про примітиви. -The `symbol` type is used to create unique identifiers for objects. We have to mention it here for completeness, but it's better to study this type after objects. +Тип `symbol` використовується для створення унікальних ідентифікаторів для об'єктів. Ми повинні згадати цей тип тут для повноти, але краще вивчити його після об'єктів. -## The typeof operator [#type-typeof] +## Оператор typeof [#type-typeof] -The `typeof` operator returns the type of the argument. It's useful when we want to process values of different types differently or just want to do a quick check. +Оператор `typeof` повертає тип аргументу. Це корисно, коли ми хочемо обробляти значення різних типів по-різному або просто хочемо зробити швидку перевірку. -It supports two forms of syntax: +Він підтримує дві форми синтаксису: -1. As an operator: `typeof x`. -2. As a function: `typeof(x)`. +1. Як оператор: `typeof x`. +2. Як функція: `typeof(x)`. -In other words, it works with parentheses or without them. The result is the same. +Іншими словами, він працює з дужками або без них. Результат такий самий. -The call to `typeof x` returns a string with the type name: +Виклик `typeof x` повертає рядок з назвою типу: ```js typeof undefined // "undefined" @@ -219,28 +219,28 @@ typeof alert // "function" (3) */!* ``` -The last three lines may need additional explanation: +Останні три рядки можуть потребувати додаткового пояснення: -1. `Math` is a built-in object that provides mathematical operations. We will learn it in the chapter . Here, it serves just as an example of an object. -2. The result of `typeof null` is `"object"`. That's wrong. It is an officially recognized error in `typeof`, kept for compatibility. Of course, `null` is not an object. It is a special value with a separate type of its own. So, again, this is an error in the language. -3. The result of `typeof alert` is `"function"`, because `alert` is a function of the language. We'll study functions in the next chapters where we'll see that there's no special "function" type in JavaScript. Functions belong to the object type. But `typeof` treats them differently. Formally, it's incorrect, but very convenient in practice. +1. `Math` -- це вбудований об'єкт, який забезпечує математичні операції. +2. Рзультатом `typeof null` є `"object"`. Це неправильно. Це офіційно визнана помилка в "typeof", що зберігається для сумісності. Звичайно, `null` не є об'єктом. Це особливе значення з власним типом. Отже, знову ж таки, це помилка в мові. +3. Результатом `typeof alert` є `"function"`, тому що `alert` — це функція мови. Ми будемо вивчати функції в наступних розділах, де ми побачимо, що в JavaScript немає спеціального типу "function". Функції належать до типу об'єкта. Але `typeof` трактує їх по-різному. Формально це неправильно, але дуже зручно на практиці. -## Summary +## Підсумки -There are 7 basic types in JavaScript. +У JavaScript існує 7 основних типів. -- `number` for numbers of any kind: integer or floating-point. -- `string` for strings. A string may have one or more characters, there's no separate single-character type. -- `boolean` for `true`/`false`. -- `null` for unknown values -- a standalone type that has a single value `null`. -- `undefined` for unassigned values -- a standalone type that has a single value `undefined`. -- `object` for more complex data structures. -- `symbol` for unique identifiers. +- `number` для будь-яких чисел: ціле або з плаваючою точкою. +- `string` для ридкіх. Рядок може мати один або більше символів, немає окремого типу для одиночних символі. +- `boolean` для `true`/`false`. +- `null` для невідомих значень -- автономний тип, який має єдине значення `null`. +- `undefined` для непризначених значень -- автономний тип, який має єдине значення `undefined`. +- `object` для більш складних структур даних. +- `symbol` для унікальних ідентифікаторів. -The `typeof` operator allows us to see which type is stored in a variable. +Оператор `typeof` дозволяє нам бачити, який тип зберігається в змінній. -- Two forms: `typeof x` or `typeof(x)`. -- Returns a string with the name of the type, like `"string"`. -- For `null` returns `"object"` -- this is an error in the language, it's not actually an object. +- Дві форми: `typeof x` oабо `typeof(x)`. +- Повертає рядок з назвою типу, наприклад `"string"`. +- Для `null` повертає `"object"` -- це помилка в мові, це насправді не об'єкт. -In the next chapters, we'll concentrate on primitive values and once we're familiar with them, we'll move on to objects. +У наступних розділах ми зосередимося на примітивних значеннях і, коли ми ознайомимося з ними, ми перейдемо до об'єктів. From 8ddb5e0a12af5f6f21dfd2978fee6e076e8cbf8a Mon Sep 17 00:00:00 2001 From: Yuriy Ostapyuk Date: Thu, 9 May 2019 21:20:57 +0300 Subject: [PATCH 3/8] some corrections --- .../05-types/1-string-quotes/solution.md | 2 +- .../05-types/1-string-quotes/task.md | 2 +- 1-js/02-first-steps/05-types/article.md | 46 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/1-js/02-first-steps/05-types/1-string-quotes/solution.md b/1-js/02-first-steps/05-types/1-string-quotes/solution.md index 62e98fa2b..3b9e5d4c9 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/solution.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/solution.md @@ -10,6 +10,6 @@ alert( `привіт ${1}` ); // привіт 1 // вираз є рядком "ім'я" alert( `привіт ${"ім'я"}` ); // привіт ім'я -// вираз є змінною, вбудовуйте її +// вираз є змінною, вбудуйте її alert( `привіт ${name}` ); // привіт Ілля ``` diff --git a/1-js/02-first-steps/05-types/1-string-quotes/task.md b/1-js/02-first-steps/05-types/1-string-quotes/task.md index 12504ee35..83d0c8e06 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/task.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/task.md @@ -4,7 +4,7 @@ importance: 5 # Лапки у рядках -Який буде результат виконання скріпта? +Який буде результат виконання скрипта? ```js let name = "Ілля"; diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 99c1e2daa..f3d5eaa45 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -8,7 +8,7 @@ let message = "привіт"; message = 123456; ``` -Мова програмування, яка дозволяє таке робити називається "динамічно типізованою", маючи на увазі, що є типи даних, але змінні не прив'язанні до жодного типу. +Мова програмування, яка дозволяє таке робити, називається "динамічно типізованою". Мається на увазі, що є різні типи даних, але змінні не прив'язанні до жодного типу. Існує сім базових типів в JavaScript. У цьому розділі ми розглянемо їх поверхнево, але в наступних розлянемо кожен більш детально. @@ -19,7 +19,7 @@ let n = 123; n = 12.345; ``` -Тип _number_ представляє і цілі числа і числа з плаваючою точкою. +Тип _number_ представляє і цілі числа, і числа з плаваючою точкою. Існує багато операцію, що можна робити с числами, наприклад, множення `*`, ділення `/`, додавання `+`, віднімання `-`, тощо. @@ -51,12 +51,12 @@ n = 12.345; alert("not a number" / 2 + 5); // NaN ``` - Таким чином, якщо є `NaN` десь у математичному виразі, він пошірюватиметься на весь результат. + Таким чином, якщо є `NaN` десь у математичному виразі, він буде поширюватися на весь результат. ```smart header="Математичні операції є безпечними" Обчислювання є "безпечним" в JavaScript. Ми можемо робити будь-що: діління на нуль, звертатися до нечислового рядка як до числа, тощо. -Виконання скрипта ніколи не зупиниться з фатальною помилкою ("die"). У гіршому випадку ми отримаємо у результаті `NaN`. +Виконання скрипта ніколи не зупиниться з фатальною помилкою ("die"). У найгіршому випадку ми отримаємо у результаті `NaN`. ``` Спеціальні числові значення формально належать до типу "number". Хоча, звісно, вони не є числами у загальноприйнятому розумінні. @@ -65,11 +65,11 @@ n = 12.345; ## Рядок (string) -Рядок у JavaScript повинна бути оточенна лапками. +Рядок у JavaScript повинен бути оточенним лапками. ```js let str = "Привіт"; -let str2 = "Одинарні лапки також дозволяються"; +let str2 = 'Одинарні лапки також дозволяються'; let phrase = `так можна вставляти ${str}`; ``` @@ -104,9 +104,9 @@ alert("результат ${1 + 2}"); // результат ${1 + 2} (подві Більш ретельно ми будемо висвітлювати рядки у главі . ```smart header="Не існує типу *символ* (*character*)." -У деяких мовах існує спеціальний тип "character" для позначення єдіного символу. Наприклад, в мовах C та Java це `char`. +У деяких мовах існує спеціальний тип "character" для позначення єдиного символу. Наприклад, в мовах C та Java це `char`. -В JavaScript не існує такого типу. Є єдиний тип: `string`. В свою чергу рядок може містити лише один символ або багато. +В JavaScript не існує такого типу. Є єдиний тип: `string`. В свою чергу рядок може містити або один символ, або багато. ``` ## Логічний тип (boolean) @@ -119,7 +119,7 @@ alert("результат ${1 + 2}"); // результат ${1 + 2} (подві ```js let nameFieldChecked = true; // так, ім'я було перевірене -let ageFieldChecked = false; // ні, вік не був перевірен +let ageFieldChecked = false; // ні, вік не був перевіреним ``` Логічне значення також можна отримати як результат порівняння: @@ -136,13 +136,13 @@ alert(isGreater); // true (результат порівняння "так") Спеціальне значенна `null` не належить до жодного з описаних вище типів. -Воно формує окремий власний тип який містить значення `null`: +Воно формує окремий власний тип, який містить значення `null`: ```js let age = null; ``` -У JavaScript, `null` не є "посиланням на не існуючий об'єкт" або "null показчие" як може бути у інших мовах програмування. +У JavaScript `null` не є "посиланням на не існуючий об'єкт" або "показчиком на null", як може бути у інших мовах програмування. Це лише спеціальне значення, яке представляє "нічого", "порожнє" або "невідоме значення". @@ -150,9 +150,9 @@ let age = null; ## Значення "undefined" -Спеціальне значення `undefined` також стоїть окремо. Воно представляє власний тип, подібно до "null". +Спеціальне значення `undefined` також стоїть окремо. Воно представляє власний тип, подібний до "null". -The meaning of `undefined` is "value is not assigned". +`undefined` означає, що "значення не присвоєно". Якщо змінна оголошена, але їй не призначене якесь значення, тоді значення такої змінної буде `undefined`: @@ -162,7 +162,7 @@ let x; alert(x); // показує "undefined" ``` -Технічно, є така можливість `undefined` to any variable: +Технічно, є така можливість призначити `undefined` будь-якій змінній: ```js run let x = 123; @@ -172,7 +172,7 @@ x = undefined; alert(x); // "undefined" ``` -...Але ми не рекомендуємо так робити. Як правило, ми використовуємо `null`, щоб присвоїти змінній значення "порожнє" або "невідоме", і ми викроистовуємо `undefined` для перевірок, як, наприклад, перевірка чи було змінній присвоєне значення. +...Але ми не рекомендуємо так робити. Як правило, ми використовуємо `null`, щоб присвоїти змінній значення "порожнє" або "невідоме", і ми використовуємо `undefined` для перевірок, як, наприклад, перевірка чи було змінній присвоєне значення. ## Об'єкти та Символи @@ -191,7 +191,7 @@ alert(x); // "undefined" 1. Як оператор: `typeof x`. 2. Як функція: `typeof(x)`. -Іншими словами, він працює з дужками або без них. Результат такий самий. +Іншими словами, він працює з дужками або без них. Результат однаковий для обох випадків. Виклик `typeof x` повертає рядок з назвою типу: @@ -221,7 +221,7 @@ typeof alert // "function" (3) Останні три рядки можуть потребувати додаткового пояснення: -1. `Math` -- це вбудований об'єкт, який забезпечує математичні операції. +1. `Math` — це вбудований об'єкт, який забезпечує математичні операції. 2. Рзультатом `typeof null` є `"object"`. Це неправильно. Це офіційно визнана помилка в "typeof", що зберігається для сумісності. Звичайно, `null` не є об'єктом. Це особливе значення з власним типом. Отже, знову ж таки, це помилка в мові. 3. Результатом `typeof alert` є `"function"`, тому що `alert` — це функція мови. Ми будемо вивчати функції в наступних розділах, де ми побачимо, що в JavaScript немає спеціального типу "function". Функції належать до типу об'єкта. Але `typeof` трактує їх по-різному. Формально це неправильно, але дуже зручно на практиці. @@ -230,17 +230,17 @@ typeof alert // "function" (3) У JavaScript існує 7 основних типів. - `number` для будь-яких чисел: ціле або з плаваючою точкою. -- `string` для ридкіх. Рядок може мати один або більше символів, немає окремого типу для одиночних символі. +- `string` для рядків. Рядок може мати один або більше символів, немає окремого типу для одиночних символів. - `boolean` для `true`/`false`. -- `null` для невідомих значень -- автономний тип, який має єдине значення `null`. -- `undefined` для непризначених значень -- автономний тип, який має єдине значення `undefined`. +- `null` для невідомих значень — автономний тип, який має єдине значення `null`. +- `undefined` для непризначених значень — автономний тип, який має єдине значення `undefined`. - `object` для більш складних структур даних. - `symbol` для унікальних ідентифікаторів. Оператор `typeof` дозволяє нам бачити, який тип зберігається в змінній. -- Дві форми: `typeof x` oабо `typeof(x)`. +- Дві форми: `typeof x` або `typeof(x)`. - Повертає рядок з назвою типу, наприклад `"string"`. -- Для `null` повертає `"object"` -- це помилка в мові, це насправді не об'єкт. +- Для `null` повертає `"object"` — це помилка в мові, `null` насправді не об'єкт. -У наступних розділах ми зосередимося на примітивних значеннях і, коли ми ознайомимося з ними, ми перейдемо до об'єктів. +У наступних розділах ми зосередимося на примітивних значеннях і, коли ми ознайомимося з ними, то перейдемо до об'єктів. From cbb7d21a7e24b089eaa1493b432438e8ae5b162a Mon Sep 17 00:00:00 2001 From: Yuriy Ostapyuk Date: Thu, 9 May 2019 22:48:45 +0300 Subject: [PATCH 4/8] after review fixes --- 1-js/02-first-steps/05-types/article.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index f3d5eaa45..fe5551769 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -25,7 +25,7 @@ n = 12.345; Окрім звичайних чисел, також існують так звані "спеціальні числові значення", що також мають відношення до цього типу даних: `Infinity`, `-Infinity` and `NaN`. -- `Infinity` являє собою математічну [наскінченність](https://uk.wikipedia.org/wiki/%D0%9D%D0%B5%D1%81%D0%BA%D1%96%D0%BD%D1%87%D0%B5%D0%BD%D0%BD%D1%96%D1%81%D1%82%D1%8C) ∞. Це спеціальний тип, що є більшим за будь-яке число. +- `Infinity` являє собою математічну [наскінченність](https://uk.wikipedia.org/wiki/Нескінченність) ∞. Це спеціальний тип, що є більшим за будь-яке число. Ми можемо отримати його як результат ділення на нуль: @@ -38,8 +38,7 @@ n = 12.345; ```js run alert(Infinity); // Infinity ``` - -- `NaN` являє собою помилку обчислення. Це є результат неправильної або невизначеної математичної операції, наприклад: +- `NaN` (Not a Number) являє собою помилку обчислення. Це є результат неправильної або невизначеної математичної операції, наприклад: ```js run alert("not a number" / 2); // NaN, таке ділення є помилковим @@ -73,7 +72,7 @@ let str2 = 'Одинарні лапки також дозволяються'; let phrase = `так можна вставляти ${str}`; ``` -В JavaScript існує три типу лапок. +В JavaScript існує три типи лапок. 1. Подвійні лапки: `"Привіт"`. 2. Одинарні липки: `'Привіт'`. @@ -84,10 +83,10 @@ let phrase = `так можна вставляти ${str}`; Зворотні лапки є "розширеною функціональністю". Вони дозволяють вбудовувати змінні та вирази в рядок, обрамляючи їх `${…}`, наприклад: ```js run -let name = "Джон"; +let name = "Іван"; // вбудована змінна -alert(`Привіт, *!*${name}*/!*!`); // Привіт, Джон! +alert(`Привіт, *!*${name}*/!*!`); // Привіт, Іван! // вбудований вираз alert(`результат *!*${1 + 2}*/!*`); // результат 3 From 4fca1f153381ec15f295e2bf6777bd4da68dd89e Mon Sep 17 00:00:00 2001 From: Yuriy Ostapyuk Date: Fri, 10 May 2019 19:58:32 +0300 Subject: [PATCH 5/8] reverted some changes --- figures.sketch | Bin 5357084 -> 5357168 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/figures.sketch b/figures.sketch index a50292b70185c49ef9b78785b419c0c1d1a4503d..c740ac5772b7c4391f0737c21955aa826164fbb9 100644 GIT binary patch delta 884 zcmWlXYeAX$nrM$bTlR(7`$|NckDK)z&nC2@=VWMdk zNwXA7YMAzb8ANzVLujZaM5+0~tjv)Y5N!3|hd;k_e$Vq9&Utz7?~HK`h^}7BVP4cr zr4Knwjc$U~O>jsz!F~0D!_fK4U3s^_cS7EeQ4YiQ>v@P7_3O>ODzTqSv!J;&{qua;YosxeeI?zYn%5Y2YR&4UeTtl-ix$)Z~sBG>+7Tq_Hel!Qp)W(_*V~? zU3jSYJ=|ER58_K>p?>9=*he<_QDlQ`0k>yeM`VaUxsC)R9>7fgNT59ECwa7=GaOGHO+0lBp95!^7PBY@ zSI@+7XHZ*_$o@2Lt=BWcw4 pG`&@hTI@plwl!)BLpmu88Aq>i89`fhp~k5#=7xqxcMCN&n*ZBqQ9S?v delta 705 zcmWN`X-E@b0Ecm0Ub%FdPMuTJm2+O3P3JY2*VJj7I#W#0AWAS%u{7BzmJ2 z^hU<(aa1-OE546;ruEPF1SV_B1~A$38^}tQ9aggJH*&~~&Yn7s8J)v~4s{94rZ%!S z$Hd;;3HA_JRgSm5p;hIiSjQJ3tKc?*M_39asorIwde`~fO`@-Gp-w_y;kq+{XFNCc z5dM91`z6GWUANkPQq;{xQMbE&9x2&$r#vW6lx%Xg9B{$HSz1NVqF1gA^)B2bDW;WN zcR7}{TzxEB=D1xR@Y&!x%OT`@8@}T2q4!uV8LaWaV2$seGW4$c4#*JabE^IOk zCCz;TH1`D^n9x)nT=|J?M~6_M*p3dX%O$0nFqCS9Yq2E5Af!adFodTEpkp(<%7HK} z;b2(Kvai9jSgd7Z_=fn7J3?B;94%5g5g~TC?iZ0>N2YorFx3-zWWiLM#NQUn9TFQ2 z*11tHWJFsSMMXnf81uUhjh|x%t`eRk7CcE@O)+{q<3gpxun-5sg0xeEf{XFb-@uwJ zb1nnBQ6`E;>MPlff=G{KkRF{|k-$rm5avk~sst!hiS|}dXC zOl4Ou9ape=={)--b{v(9@t{?FnH-ENDHWB4gVF5nNIY1}-eZw=b2i$|IVtrpm8*5? E|3>RfdjJ3c From 10a21601fff11abb498eabcd393aa2d625c61d24 Mon Sep 17 00:00:00 2001 From: Taras Date: Fri, 10 May 2019 20:19:30 +0300 Subject: [PATCH 6/8] small text corrections --- 1-js/02-first-steps/05-types/1-string-quotes/solution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/02-first-steps/05-types/1-string-quotes/solution.md b/1-js/02-first-steps/05-types/1-string-quotes/solution.md index 3b9e5d4c9..ce50d78e8 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/solution.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/solution.md @@ -1,5 +1,5 @@ -Зворотні лапки вбудовують вираз, що знаходиться у `${...}`, у рядок. +Зворотні лапки вбудовують вираз, що знаходиться всередині `${...}`, у рядок. ```js run let name = "Ілля"; @@ -10,6 +10,6 @@ alert( `привіт ${1}` ); // привіт 1 // вираз є рядком "ім'я" alert( `привіт ${"ім'я"}` ); // привіт ім'я -// вираз є змінною, вбудуйте її +// вираз є змінною, яка вбудовується alert( `привіт ${name}` ); // привіт Ілля ``` From aa7a6a73279e2edb503124d8385c4c03c6085a79 Mon Sep 17 00:00:00 2001 From: Taras Date: Fri, 10 May 2019 20:39:29 +0300 Subject: [PATCH 7/8] corrections to Article "Data types" --- 1-js/02-first-steps/05-types/article.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index fe5551769..1b5a92492 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -21,9 +21,9 @@ n = 12.345; Тип _number_ представляє і цілі числа, і числа з плаваючою точкою. -Існує багато операцію, що можна робити с числами, наприклад, множення `*`, ділення `/`, додавання `+`, віднімання `-`, тощо. +Є багато операцій, що можна робити с числами, наприклад, множення `*`, ділення `/`, додавання `+`, віднімання `-`, тощо. -Окрім звичайних чисел, також існують так звані "спеціальні числові значення", що також мають відношення до цього типу даних: `Infinity`, `-Infinity` and `NaN`. +Окрім звичайних чисел, також існують так звані "спеціальні числові значення", що також мають відношення до цього типу даних: `Infinity`, `-Infinity` і `NaN`. - `Infinity` являє собою математічну [наскінченність](https://uk.wikipedia.org/wiki/Нескінченність) ∞. Це спеціальний тип, що є більшим за будь-яке число. @@ -53,9 +53,9 @@ n = 12.345; Таким чином, якщо є `NaN` десь у математичному виразі, він буде поширюватися на весь результат. ```smart header="Математичні операції є безпечними" -Обчислювання є "безпечним" в JavaScript. Ми можемо робити будь-що: діління на нуль, звертатися до нечислового рядка як до числа, тощо. +Обчислювання є "безпечним" в JavaScript. Ми можемо робити будь-що: ділити на нуль, звертатися до нечислового рядка як до числа, тощо. -Виконання скрипта ніколи не зупиниться з фатальною помилкою ("die"). У найгіршому випадку ми отримаємо у результаті `NaN`. +Виконання скрипта ніколи не зупиниться з фатальною помилкою ("die"). У найгіршому випадку ми отримаємо в результаті `NaN`. ``` Спеціальні числові значення формально належать до типу "number". Хоча, звісно, вони не є числами у загальноприйнятому розумінні. @@ -100,7 +100,7 @@ alert(`результат *!*${1 + 2}*/!*`); // результат 3 alert("результат ${1 + 2}"); // результат ${1 + 2} (подвійні лапки не мають ніякого впливу) ``` -Більш ретельно ми будемо висвітлювати рядки у главі . +Більш детально ми будемо висвітлювати рядки у розділі . ```smart header="Не існує типу *символ* (*character*)." У деяких мовах існує спеціальний тип "character" для позначення єдиного символу. Наприклад, в мовах C та Java це `char`. @@ -129,11 +129,11 @@ let isGreater = 4 > 1; alert(isGreater); // true (результат порівняння "так") ``` -Більш глибоко ми охопимо булеві типи у главі . +Більш глибоко ми охопимо булеві типи у розділі . ## Значення "null" -Спеціальне значенна `null` не належить до жодного з описаних вище типів. +Спеціальне значення `null` не належить до жодного з описаних вище типів. Воно формує окремий власний тип, який містить значення `null`: @@ -141,11 +141,11 @@ alert(isGreater); // true (результат порівняння "так") let age = null; ``` -У JavaScript `null` не є "посиланням на не існуючий об'єкт" або "показчиком на null", як може бути у інших мовах програмування. +В JavaScript `null` не є "посиланням на не існуючий об'єкт" або "показчиком на null", як може бути у інших мовах програмування. Це лише спеціальне значення, яке представляє "нічого", "порожнє" або "невідоме значення". -У наведеному вище коді зазначено, що `age` невідома чи порожня з якоїсь причини. +В наведеному вище коді зазначено, що змінна `age` невідома чи порожня з якоїсь причини. ## Значення "undefined" @@ -171,13 +171,13 @@ x = undefined; alert(x); // "undefined" ``` -...Але ми не рекомендуємо так робити. Як правило, ми використовуємо `null`, щоб присвоїти змінній значення "порожнє" або "невідоме", і ми використовуємо `undefined` для перевірок, як, наприклад, перевірка чи було змінній присвоєне значення. +...Але ми не рекомендуємо так робити. Як правило, ми використовуємо `null`, щоб присвоїти змінній значення "порожнє" або "невідоме", і ми використовуємо `undefined` щоб перевірити чи було змінній присвоєне значення. -## Об'єкти та Символи +## Об'єкт (object) та Символ (symbol) Тип `object` є особливим типом. -Всі інші типи називаються "примітивами", тому що їх значення можуть містити тільки один елемент (це може бути рядок, або число, або будь-що інше). Навпаки, об'єкти використовуються для зберігання колекцій даних і більш складних об'єктів. Ми розглянемо їх пізніше у розділі після того, як ми дізнаємося більше про примітиви. +Всі інші типи називаються "примітивами", тому що їх значення можуть містити тільки один елемент (це може бути рядок, або число, або будь-що інше). Об'єкти навпаки - використовуються для зберігання колекцій даних і більш складних об'єктів. Ми розглянемо їх пізніше у розділі після того, як ми дізнаємося більше про примітиви. Тип `symbol` використовується для створення унікальних ідентифікаторів для об'єктів. Ми повинні згадати цей тип тут для повноти, але краще вивчити його після об'єктів. From c584f26298fce62044c6de54ff0538213ca7cdae Mon Sep 17 00:00:00 2001 From: Taras Date: Fri, 10 May 2019 20:45:52 +0300 Subject: [PATCH 8/8] sync lines with original --- 1-js/02-first-steps/05-types/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 1b5a92492..7cbe23aca 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -95,7 +95,6 @@ alert(`результат *!*${1 + 2}*/!*`); // результат 3 Вираз всередені `${…}` обчислюється, а результат обчислення стає частиною рядка. Ми можемо вбудовувати будь-що: змінну `name`, або арифметичний вираз `1 + 2`, або щось набагато складніше. Будь ласка, зауважте, що вбудовування можно робити тільки зі зворотніми лапками. Інші типи лапків не мають функціональності вбудовування! - ```js run alert("результат ${1 + 2}"); // результат ${1 + 2} (подвійні лапки не мають ніякого впливу) ``` @@ -224,6 +223,7 @@ typeof alert // "function" (3) 2. Рзультатом `typeof null` є `"object"`. Це неправильно. Це офіційно визнана помилка в "typeof", що зберігається для сумісності. Звичайно, `null` не є об'єктом. Це особливе значення з власним типом. Отже, знову ж таки, це помилка в мові. 3. Результатом `typeof alert` є `"function"`, тому що `alert` — це функція мови. Ми будемо вивчати функції в наступних розділах, де ми побачимо, що в JavaScript немає спеціального типу "function". Функції належать до типу об'єкта. Але `typeof` трактує їх по-різному. Формально це неправильно, але дуже зручно на практиці. + ## Підсумки У JavaScript існує 7 основних типів.