From 55ddd4454665a3c66e3d5b186bc79048468d36e7 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Mon, 15 Mar 2021 14:29:50 +0300 Subject: Auto fixes --- .../javascript/reference/statements/async_function/index.html | 2 +- files/ru/web/javascript/reference/statements/block/index.html | 2 +- files/ru/web/javascript/reference/statements/class/index.html | 2 +- files/ru/web/javascript/reference/statements/empty/index.html | 2 +- .../ru/web/javascript/reference/statements/for...in/index.html | 2 +- .../ru/web/javascript/reference/statements/for...of/index.html | 6 +++--- files/ru/web/javascript/reference/statements/for/index.html | 4 ++-- .../ru/web/javascript/reference/statements/function/index.html | 2 +- files/ru/web/javascript/reference/statements/import/index.html | 8 ++++---- files/ru/web/javascript/reference/statements/let/index.html | 10 +++++----- files/ru/web/javascript/reference/statements/return/index.html | 4 ++-- .../web/javascript/reference/statements/try...catch/index.html | 6 +++--- files/ru/web/javascript/reference/statements/var/index.html | 2 +- files/ru/web/javascript/reference/statements/with/index.html | 2 +- 14 files changed, 27 insertions(+), 27 deletions(-) (limited to 'files/ru/web/javascript/reference/statements') diff --git a/files/ru/web/javascript/reference/statements/async_function/index.html b/files/ru/web/javascript/reference/statements/async_function/index.html index df0368c62a..31bcaad8c0 100644 --- a/files/ru/web/javascript/reference/statements/async_function/index.html +++ b/files/ru/web/javascript/reference/statements/async_function/index.html @@ -81,7 +81,7 @@ add2(10).then(v => {

Не путайте await и Promise.all

-

Функция add1 приостанавливается на 2 секунды для первого await и еще на 2 для второго. Второй таймер создается только после срабатывания первого. В функции add2 создаются оба и оба же переходят в состояние await. В результате функция add2 завершится скорее через две, чем через четыре секунды, поскольку таймеры работают одновременно. Однако запускаются они все же не паралелльно, а друг за другом - такая конструкция не означает автоматического использования Promise.all. Если два или более Promise должны разрешаться параллельно, следует использовать Promise.all.

+

Функция add1 приостанавливается на 2 секунды для первого await и еще на 2 для второго. Второй таймер создается только после срабатывания первого. В функции add2 создаются оба и оба же переходят в состояние await. В результате функция add2 завершится скорее через две, чем через четыре секунды, поскольку таймеры работают одновременно. Однако запускаются они все же не параллельно, а друг за другом - такая конструкция не означает автоматического использования Promise.all. Если два или более Promise должны разрешаться параллельно, следует использовать Promise.all.

Когда функция async выбрасывает исключение

diff --git a/files/ru/web/javascript/reference/statements/block/index.html b/files/ru/web/javascript/reference/statements/block/index.html index 44198e332a..a6fb564aa7 100644 --- a/files/ru/web/javascript/reference/statements/block/index.html +++ b/files/ru/web/javascript/reference/statements/block/index.html @@ -47,7 +47,7 @@ original_slug: Web/JavaScript/Reference/Statements/Блок

С использованием var

-

Переменные, объявленные через varне имеют блочной области видимости. Переменные, введенные внутри блока, имеют областью видимости содержащую их функцию или скрипт, и последствия записи в них значения распространяются за границы, собственно, блока, в котором они объявлены. Другими словами, блок инструкций не вводит новую область видимости. Хотя "отдельностоящие" блоки не являются нарушением синтаксиса, не стоит использовать отдельностоящие блоки в JavaScript, потому что они не делают то, чего вы от них ожидаете, если вы ожидаете, что они будут себя вести аналогично блокам в C или Java. Например:

+

Переменные, объявленные через varне имеют блочной области видимости. Переменные, введенные внутри блока, имеют областью видимости содержащую их функцию или скрипт, и последствия записи в них значения распространяются за границы, собственно, блока, в котором они объявлены. Другими словами, блок инструкций не вводит новую область видимости. Хотя "отдельно стоящие" блоки не являются нарушением синтаксиса, не стоит использовать отдельно стоящие блоки в JavaScript, потому что они не делают то, чего вы от них ожидаете, если вы ожидаете, что они будут себя вести аналогично блокам в C или Java. Например:

var x = 1;
 {
diff --git a/files/ru/web/javascript/reference/statements/class/index.html b/files/ru/web/javascript/reference/statements/class/index.html
index 3aab01ee9a..8fae4bf5d3 100644
--- a/files/ru/web/javascript/reference/statements/class/index.html
+++ b/files/ru/web/javascript/reference/statements/class/index.html
@@ -84,7 +84,7 @@ class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
  
 
 
-

Поддержка брузерами

+

Поддержка браузерами

{{CompatibilityTable}}

diff --git a/files/ru/web/javascript/reference/statements/empty/index.html b/files/ru/web/javascript/reference/statements/empty/index.html index 89956bf163..3792c035bc 100644 --- a/files/ru/web/javascript/reference/statements/empty/index.html +++ b/files/ru/web/javascript/reference/statements/empty/index.html @@ -39,7 +39,7 @@ console.log(arr) killTheUniverse() // Это всегда выполняется!!!
-

Другой пример: if...else без фигурных скобок  ({}). Если three истинно, ничего не пройзойдет, four не важна, и функция launchRocket() тоже не запустится.

+

Другой пример: if...else без фигурных скобок  ({}). Если three истинно, ничего не произойдет, four не важна, и функция launchRocket() тоже не запустится.

if (one)
   doOne();
diff --git a/files/ru/web/javascript/reference/statements/for...in/index.html b/files/ru/web/javascript/reference/statements/for...in/index.html
index 6cca45033b..24d7434f81 100644
--- a/files/ru/web/javascript/reference/statements/for...in/index.html
+++ b/files/ru/web/javascript/reference/statements/for...in/index.html
@@ -29,7 +29,7 @@ translation_of: Web/JavaScript/Reference/Statements/for...in
 
 

Удаление, добавление и модификация свойств

-

Цикл for...in проходит по свойствам в произвольном порядке (см. оператор {{jsxref("Operators/delete", "delete")}} для того, чтобы узнать почему порядок прохода может отличаться в зависимости от браузера). Если свойство изменяется за одну итерацию, а затем изменяется снова, его значением в цикле является его последнее значение. Свойство, удаленное до того, как до него дошёл цикл, не будет участвовать в нём. Свойства добавленные в объекты в цикле могут быть пропущены. В общем, лучше не добавлять, изменять или удалять свойство из объекта во время итерации, если по нему ещё не прошли. Нет гарантии, что добавленное свойство будет посещено циклом, изменное после проведения изменений, а удалённое после удаления.

+

Цикл for...in проходит по свойствам в произвольном порядке (см. оператор {{jsxref("Operators/delete", "delete")}} для того, чтобы узнать почему порядок прохода может отличаться в зависимости от браузера). Если свойство изменяется за одну итерацию, а затем изменяется снова, его значением в цикле является его последнее значение. Свойство, удаленное до того, как до него дошёл цикл, не будет участвовать в нём. Свойства добавленные в объекты в цикле могут быть пропущены. В общем, лучше не добавлять, изменять или удалять свойство из объекта во время итерации, если по нему ещё не прошли. Нет гарантии, что добавленное свойство будет посещено циклом, низменное после проведения изменений, а удалённое после удаления.

Проход по массиву и for...in

diff --git a/files/ru/web/javascript/reference/statements/for...of/index.html b/files/ru/web/javascript/reference/statements/for...of/index.html index 0074719d06..fdf8799529 100644 --- a/files/ru/web/javascript/reference/statements/for...of/index.html +++ b/files/ru/web/javascript/reference/statements/for...of/index.html @@ -251,7 +251,7 @@ iterable.foo = 'hello';
console.log(i); // выведет 0, 1, 2, "foo", "arrCustom", "objCustom" } -

Цикл выводит только перечисляемые свойства объекта iterable, в порядке их создания. Он не выводит значения 357 и hello поскольку они не являются перечисляемыми, фактически они вообще не являются свойствами, они являютя значениями. Выводятся же имена свойств и методов, например arrCustom и objCustom. Если вы еще не совсем поняли, по каким свойствам осуществляется обход, вот дополнительное объяснение того, как работает {{jsxref("Statements/for...in", "array iteration and for...in", "#Array_iteration_and_for...in")}} .

+

Цикл выводит только перечисляемые свойства объекта iterable, в порядке их создания. Он не выводит значения 357 и hello поскольку они не являются перечисляемыми, фактически они вообще не являются свойствами, они являются значениями. Выводятся же имена свойств и методов, например arrCustom и objCustom. Если вы еще не совсем поняли, по каким свойствам осуществляется обход, вот дополнительное объяснение того, как работает {{jsxref("Statements/for...in", "array iteration and for...in", "#Array_iteration_and_for...in")}} .

for (let i in iterable) {
   if (iterable.hasOwnProperty(i)) {
@@ -259,7 +259,7 @@ iterable.foo = 'hello';
} } -

Цикл аналогичен предыдущему, но использует {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}} для проверки того, собственное ли это свойство объекта или унаследованое. Выводятся только собственные свойства. Имена 012 и foo принадлежат только экземпляру объекта (не унаследованы). Методы arrCustom и objCustom не выводятся, поскольку они унаследованы.

+

Цикл аналогичен предыдущему, но использует {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}} для проверки того, собственное ли это свойство объекта или унаследованное. Выводятся только собственные свойства. Имена 012 и foo принадлежат только экземпляру объекта (не унаследованы). Методы arrCustom и objCustom не выводятся, поскольку они унаследованы.

for (let i of iterable) {
   console.log(i); // выведет 3, 5, 7
@@ -279,7 +279,7 @@ iterable.foo = 'hello';
{{SpecName('ES2015', '#sec-for-in-and-for-of-statements', 'for...of statement')}} {{Spec2('ES2015')}} - Изначальное опеределение. + Изначальное определение. {{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'for...of statement')}} diff --git a/files/ru/web/javascript/reference/statements/for/index.html b/files/ru/web/javascript/reference/statements/for/index.html index 40945dffda..6b394ef5a5 100644 --- a/files/ru/web/javascript/reference/statements/for/index.html +++ b/files/ru/web/javascript/reference/statements/for/index.html @@ -20,9 +20,9 @@ translation_of: Web/JavaScript/Reference/Statements/for
инициализация
Выражение (в том числе выражения присвоения) или определение переменных. Обычно используется, чтобы инициализировать счётчик. Это выражение может опционально объявлять новые переменные с помощью ключевого слова var. Эти переменные видимы не только в цикле, т.е. в той же области области видимости, что и цикл for. Результат этого выражения отбрасывается.
условие
-
Выражение, выполняющееся на каждой интерации цикла. Если выражение истинно, цикл выполняется. Условие не является обязательным. Если его нет, условие всегда считается истиной. Если выражение ложно, выполнение переходит к первому выражению, следующему за for.
+
Выражение, выполняющееся на каждой итерации цикла. Если выражение истинно, цикл выполняется. Условие не является обязательным. Если его нет, условие всегда считается истиной. Если выражение ложно, выполнение переходит к первому выражению, следующему за for.
финальное выражение
-
Выражение, выполняющееся в конце интерации цикла. Происходит до следующего выполнения условия. Обычно используется для обновления или увеличения переменной счётчика.
+
Выражение, выполняющееся в конце итерации цикла. Происходит до следующего выполнения условия. Обычно используется для обновления или увеличения переменной счётчика.
выражение
Выражение, которое выполняется, когда условие цикла истинно. Чтоб выполнить множество выражений в цикле, используйте блок ({ ... }) для группировки этих выражений. Чтобы не выполнять никакого выражения в цикле, используйте пустое выражение (;).
diff --git a/files/ru/web/javascript/reference/statements/function/index.html b/files/ru/web/javascript/reference/statements/function/index.html index 37ccac9a29..c9bd08cfb8 100644 --- a/files/ru/web/javascript/reference/statements/function/index.html +++ b/files/ru/web/javascript/reference/statements/function/index.html @@ -64,7 +64,7 @@ var notHoisted = function() {

Использование function

-

Следующий код объявляет функцию, возврающую итоговое количество продаж, сложенное из количества продаж продуктов a, b и c.

+

Следующий код объявляет функцию, возвращающую итоговое количество продаж, сложенное из количества продаж продуктов a, b и c.

function calc_sales(units_a, units_b, units_c) {
    return units_a*79 + units_b * 129 + units_c * 699;
diff --git a/files/ru/web/javascript/reference/statements/import/index.html b/files/ru/web/javascript/reference/statements/import/index.html
index bc4a369f52..d301e39327 100644
--- a/files/ru/web/javascript/reference/statements/import/index.html
+++ b/files/ru/web/javascript/reference/statements/import/index.html
@@ -46,7 +46,7 @@ import("/module-name.js").then(module => {…}) // Динамический 
  
module-name
Имя модуля для импорта. Это зачастую относительный или абсолютный путь к .js файлу модуля без указания расширения .js. Некоторые сборщики могут разрешать или даже требовать использования расширения; проверяйте своё рабочее окружение. Допускаются только строки с одиночными или двойными кавычками.
name
-
Имя локального обьекта, который будет использован как своего рода пространство имен, ссылающееся на импортируемые значения.
+
Имя локального объекта, который будет использован как своего рода пространство имен, ссылающееся на импортируемые значения.
@@ -61,7 +61,7 @@ import("/module-name.js").then(module => {…}) // Динамический

Описание

-

Параметр name это имя локального обьекта, который будет использован как своего рода пространство имен, ссылающееся на импортируемые значения. Параметры export определяют отдельные именованные значения, в то время как import * as name импортирует все значения. Примеры ниже объясняют синтаксис.

+

Параметр name это имя локального объекта, который будет использован как своего рода пространство имен, ссылающееся на импортируемые значения. Параметры export определяют отдельные именованные значения, в то время как import * as name импортирует все значения. Примеры ниже объясняют синтаксис.

Импорт всего содержимого модуля

@@ -87,7 +87,7 @@ import("/module-name.js").then(module => {…}) // Динамический

Импорт значений с использованием более удобных имен

-

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

+

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

import {reallyReallyLongModuleExportName as shortName}
   from '/modules/my-module.js';
@@ -233,7 +233,7 @@ for (const link of document.querySelectorAll("nav > a")) { Спецификация Статус - Комменарий + Комментарий {{SpecName('ES2015', '#sec-imports', 'Imports')}} diff --git a/files/ru/web/javascript/reference/statements/let/index.html b/files/ru/web/javascript/reference/statements/let/index.html index 18b471121d..2f38f7e7ca 100644 --- a/files/ru/web/javascript/reference/statements/let/index.html +++ b/files/ru/web/javascript/reference/statements/let/index.html @@ -175,13 +175,13 @@ for ( let i=i ; i < 10 ; i++ ) {
for (let expr1; expr2; expr3) statement
 
-

В этом примере expr2, expr3, statement  заключены в неявный блок, который содержит блок локальных переменных, объявленых конструкцией let expr1. Пример приведен выше.

+

В этом примере expr2, expr3, statement  заключены в неявный блок, который содержит блок локальных переменных, объявленных конструкцией let expr1. Пример приведен выше.

Примеры

let vs var

-

Когда let используется внутри блока, то область видимости переменной ограничивается этим блоком. Напомним, что отличие заключается в том, что областью видимости переменных, объявленных диретивой var, является вся функция, в которой они были объявлены.

+

Когда let используется внутри блока, то область видимости переменной ограничивается этим блоком. Напомним, что отличие заключается в том, что областью видимости переменных, объявленных директивой var, является вся функция, в которой они были объявлены.

var a = 5;
 var b = 10;
@@ -215,7 +215,7 @@ console.log(i); // i is not defined

Поддержка let блоков была убрана в Gecko 44  {{bug(1023609)}}.

-

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

+

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

Синтаксис

@@ -224,7 +224,7 @@ console.log(i); // i is not defined

Описание

-

let блок предоставляет локальную область видимости для переменных. Работа его заключается в привязке нуля или более переменных к области видимости этого блока кода, другими словами, он является блоком операторов. Отметим, что область видимости переменных, объявленных директивой var, в блоке let, будет той же самой, что и если бы эти переменные были объявленны вне блока let, иными словами областью видимости таких переменных по-прежнему является функция. Скобки в блоке let являются обязательными. Опускание их приведет к синтаксической ошибке.

+

let блок предоставляет локальную область видимости для переменных. Работа его заключается в привязке нуля или более переменных к области видимости этого блока кода, другими словами, он является блоком операторов. Отметим, что область видимости переменных, объявленных директивой var, в блоке let, будет той же самой, что и если бы эти переменные были объявлены вне блока let, иными словами областью видимости таких переменных по-прежнему является функция. Скобки в блоке let являются обязательными. Опускание их приведет к синтаксической ошибке.

Пример

@@ -408,7 +408,7 @@ console.log(a); // 5 diff --git a/files/ru/web/javascript/reference/statements/return/index.html b/files/ru/web/javascript/reference/statements/return/index.html index 107173c310..37f44af769 100644 --- a/files/ru/web/javascript/reference/statements/return/index.html +++ b/files/ru/web/javascript/reference/statements/return/index.html @@ -12,7 +12,7 @@ translation_of: Web/JavaScript/Reference/Statements/return
{{EmbedInteractiveExample("pages/js/statement-return.html")}}
- +

Синтаксис

@@ -34,7 +34,7 @@ var demo = square(3); // значение demo будет равняться 9 -

Если возвращаемое значение не указано, вместо него возращается undefined.

+

Если возвращаемое значение не указано, вместо него возвращается undefined.

Следующие выражения всегда прерывают выполнение функции:

diff --git a/files/ru/web/javascript/reference/statements/try...catch/index.html b/files/ru/web/javascript/reference/statements/try...catch/index.html index 3609136b03..70766c3f48 100644 --- a/files/ru/web/javascript/reference/statements/try...catch/index.html +++ b/files/ru/web/javascript/reference/statements/try...catch/index.html @@ -57,7 +57,7 @@ translation_of: Web/JavaScript/Reference/Statements/try...catch

Описание

-

Конструкция try содержит блок try, в котором находится одна или несколько инструкций (Блок ({} ) обязательно должен присутствовать, даже если выполняется всего одна инуструкция), и хотя бы один блок catch или finally. Таким образом, есть три основные формы конструкции try:

+

Конструкция try содержит блок try, в котором находится одна или несколько инструкций (Блок ({} ) обязательно должен присутствовать, даже если выполняется всего одна инструкция), и хотя бы один блок catch или finally. Таким образом, есть три основные формы конструкции try:

  1. try {...} catch {...}
  2. @@ -107,7 +107,7 @@ catch (e) { } } -

    Частый сценарий использованя — обработать известные исключения, а при неизвестных ошибках, пробросить их дальше:

    +

    Частый сценарий использования — обработать известные исключения, а при неизвестных ошибках, пробросить их дальше:

    try {
       myRoutine();
    @@ -200,7 +200,7 @@ window.removeEventListener('scroll', expensiveCalculations)
    -

    Другой пример: работа с файлами. В следующем фрагменте кода показывается, как скрипт открывает файл и записывает в него какие-то данные (в серверном окружении JavaScript имеет доступ к файловой системе). Во время записи может произойти ошибка. Но после открытия файл очень важно закрыть, потому что незакрытый файл может привести к утечкам памяти. В таких случях используется блок finally:

    +

    Другой пример: работа с файлами. В следующем фрагменте кода показывается, как скрипт открывает файл и записывает в него какие-то данные (в серверном окружении JavaScript имеет доступ к файловой системе). Во время записи может произойти ошибка. Но после открытия файл очень важно закрыть, потому что незакрытый файл может привести к утечкам памяти. В таких случаях используется блок finally:

    openMyFile();
     try {
    diff --git a/files/ru/web/javascript/reference/statements/var/index.html b/files/ru/web/javascript/reference/statements/var/index.html
    index 5468e52890..73954e6b67 100644
    --- a/files/ru/web/javascript/reference/statements/var/index.html
    +++ b/files/ru/web/javascript/reference/statements/var/index.html
    @@ -135,7 +135,7 @@ console.log(x, y); // 0, 1
     // значение x взято из глобальной переменной, как и ожидалось
     // значение переменной y доступно глобально
    -

    Такой же пример, но в строгом режими:

    +

    Такой же пример, но в строгом режиме:

    'use strict';
     
    diff --git a/files/ru/web/javascript/reference/statements/with/index.html b/files/ru/web/javascript/reference/statements/with/index.html
    index 7eb5d5d66a..208863d500 100644
    --- a/files/ru/web/javascript/reference/statements/with/index.html
    +++ b/files/ru/web/javascript/reference/statements/with/index.html
    @@ -24,7 +24,7 @@ translation_of: Web/JavaScript/Reference/Statements/with
     
     

    Описание

    -

    JavaScript ищет unqualified имя, исследуя  цепочку областей видимости, связанную с выполнением скрипта или функции, сожержащих это unqualified имя. Оператор 'with' добавляет данный объект в начало цепочки областей видимости в ходе исследования тела его оператора. Если unqualified имя используемое в теле соответствует свойству в цепочке областей видимости, тогда имя привязывается к свойству и объекту, содержащему это свойство. В противном случае возвращаетя {{jsxref("ReferenceError")}}.

    +

    JavaScript ищет unqualified имя, исследуя  цепочку областей видимости, связанную с выполнением скрипта или функции, содержащих это unqualified имя. Оператор 'with' добавляет данный объект в начало цепочки областей видимости в ходе исследования тела его оператора. Если unqualified имя используемое в теле соответствует свойству в цепочке областей видимости, тогда имя привязывается к свойству и объекту, содержащему это свойство. В противном случае возвращается {{jsxref("ReferenceError")}}.

    Использование оператора with не рекомендуется, и недопустимо в строгом режиме (strict mode)  ECMAScript 5 . Рекомендуемой альтернативой может стать связывание объекта, чьи свойства Вы хотели получить, с коротким именем переменной.
    -- cgit v1.2.3-54-g00ecf