Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix typos in B-ECMAScript-7 #127

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions manuscript/B-ECMAScript-7.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Розуміння ECMAScript 7 (2016)

Розробка ECMAScript 6 зайняла близько чотирьох років, і після цього, TC-39 вирішив, що такий довгий процес розробки є неприйнятним. Замість цього, вони перейшли до щорічного релізного циклу, щоб забезпечити швидше надходження нововведень мови у розробку.
Розробка ECMAScript 6 зайняла близько чотирьох років, і після цього TC-39 вирішив, що такий довгий процес розробки є неприйнятним. Замість цього, вони перейшли до щорічного релізного циклу, щоб забезпечити швидше надходження нововведень мови у розробку.

Більш часті релізи означають, що кожна нова редакція ECMAScript матиме меншу кількість нововведень ніж ECMAScript 6. Щоб підкреслити цю зміну, нові версії специфікації більше не акцентують увагу на номері редакції. Замість цього нові версії посилаються на рік публікації специфікації. В результаті, ECMAScript 6 також відомий як ECMAScript 2015, а ECMAScript 7 формально відомий як ECMAScript 2016. TC-39 збирається використовувати систему іменування прив’язану до року публікації для майбутніх редакцій ECMAScript.
Більш часті релізи означають, що кожна нова редакція ECMAScript матиме меншу кількість нововведень, ніж ECMAScript 6. Щоб підкреслити цю зміну, нові версії специфікації більше не акцентують увагу на номері редакції. Замість цього нові версії посилаються на рік публікації специфікації. В результаті, ECMAScript 6 також відомий як ECMAScript 2015, а ECMAScript 7 формально відомий як ECMAScript 2016. TC-39 збирається використовувати систему іменування, прив’язану до року публікації, для майбутніх редакцій ECMAScript.

ECMAScript 2016 був завершений у березні 2016 і містить лише три розширення мови: математичний оператор, новий метод масивів та нову синтаксичну помилку. Про них ітиметься у цьому додатку.

Expand Down Expand Up @@ -74,7 +74,7 @@ console.log(num2); // 1

### Як використовувати Array.prototype.includes()

Метод `Array.prototype.includes()` приймає два аргументи: значення для пошуку і необов’язковий індекс з якого потрібно починати пошук. Якщо передати другий аргумент, `includes()` почне шукати співпадіння починаючи з вказаного індекса. (За замовчуванням початковим індексом є `0`.) Результатом є `true`, якщо значення знайдено всередині масиву, і `false`, якщо ні. Наприклад:
Метод `Array.prototype.includes()` приймає два аргументи: значення для пошуку і необов’язковий індекс, з якого потрібно починати пошук. Якщо передати другий аргумент, `includes()` почне шукати співпадіння починаючи з вказаного індекса. (За замовчуванням початковим індексом є `0`.) Результатом є `true`, якщо значення знайдено всередині масиву, і `false`, якщо ні. Наприклад:

```js
let values = [1, 2, 3];
Expand Down Expand Up @@ -116,7 +116,7 @@ console.log(values.includes(-0)); // true

## Зміни у строгому режимі функціональної області видимості

Коли ECMAScript 5 ввів строгий режим, мова була дещо простішою ніж вона стала у ECMAScript 6. Незважаючи на це, ECMAScript 6 дозволяв використовувати строгий режим через використання директиви `"use strict"` у глобальній області видимості (що запустило б весь код у строгому режимі) або у функціональній області видимості (так, щоб лише функція запускалась у строгому режимі). Останній спосіб був проблематичним у ECMAScript 6 через більш складні способи визначення параметрів, наприклад, з деструктуруванням, значеннями параметрів за замовчуванням. Щоб зрозуміти проблему, розгляньте такий код:
Коли ECMAScript 5 ввів строгий режим, мова була дещо простішою, ніж вона стала у ECMAScript 6. Незважаючи на це, ECMAScript 6 дозволяв використовувати строгий режим через використання директиви `"use strict"` у глобальній області видимості (що запустило б весь код у строгому режимі) або у функціональній області видимості (так, щоб лише функція запускалась у строгому режимі). Останній спосіб був проблематичним у ECMAScript 6 через більш складні способи визначення параметрів, наприклад, з деструктуруванням, значеннями параметрів за замовчуванням. Щоб зрозуміти проблему, розгляньте такий код:

```js
function doSomething(first = this) {
Expand All @@ -126,9 +126,9 @@ function doSomething(first = this) {
}
```

Тут іменованому параметру `first` присвоюється значення за замовчуванням `this`. Яке значення матиме `first`? Специфікація ECMAScript 6 вказує рушієві JavaScript трактувати параметри, у цьому випадку так, як під час запуску у строгому режимі, тому `this` має бути рівним `undefined`. Однак, імплементація параметрів, які запускаються у строгому режимі, коли всередині функції присутня директива `"use strict"`, стає складною через те, що значенням за замовчуванням також може бути функція. Ця складність призвела до того, що більшість рушіїв JavaScript не імплементують це нововведення (тому `this` був би рівним глобальному об’єкту).
Тут іменованому параметру `first` присвоюється значення за замовчуванням `this`. Яке значення матиме `first`? Специфікація ECMAScript 6 вказує рушієві JavaScript трактувати параметри у цьому випадку так, як під час запуску у строгому режимі, тому `this` має бути рівним `undefined`. Однак, імплементація параметрів, які запускаються у строгому режимі, коли всередині функції присутня директива `"use strict"`, стає складною через те, що значенням за замовчуванням також може бути функція. Ця складність призвела до того, що більшість рушіїв JavaScript не імплементують це нововведення (тому `this` був би рівним глобальному об’єкту).

Внаслідок складнощів, пов’язаних з імплементацією, ECMAScript 2016 забороняє мати директиву `"use strict"` всередині функції, параметри якої містять деструктурування або значення за замовчуванням. Лише *простий список параметрів*, який не містить декструктурування або значень за замовчуванням, дозволений коли тіло функції містить `"use strict"`. Ось кілька прикладів:
Внаслідок складнощів, пов’язаних з імплементацією, ECMAScript 2016 забороняє мати директиву `"use strict"` всередині функції, параметри якої містять деструктурування або значення за замовчуванням. Лише *простий список параметрів*, який не містить декструктурування або значень за замовчуванням, дозволений, коли тіло функції містить `"use strict"`. Ось кілька прикладів:

```js
// добре - використання простого списку параметрів
Expand Down