From 841aae260382e2bf5ebb44d765d8c7301d27caab Mon Sep 17 00:00:00 2001 From: Alexey Istomin Date: Sat, 20 Mar 2021 18:37:44 +0300 Subject: Restore "ё" letter in Russian translation (#239) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(ru): restore ё letter * docs(ru): resolve conflicts * refactor(idea): remove ide folder --- .../reference/operators/addition/index.html | 2 +- .../reference/operators/await/index.html | 4 ++-- .../reference/operators/bitwise_and/index.html | 2 +- .../reference/operators/comma_operator/index.html | 4 ++-- .../operators/conditional_operator/index.html | 12 +++++----- .../reference/operators/delete/index.html | 20 ++++++++--------- .../javascript/reference/operators/in/index.html | 4 ++-- .../reference/operators/instanceof/index.html | 2 +- .../reference/operators/new.target/index.html | 4 ++-- .../javascript/reference/operators/new/index.html | 12 +++++----- .../nullish_coalescing_operator/index.html | 2 +- .../operators/object_initializer/index.html | 22 +++++++++--------- .../operators/optional_chaining/index.html | 4 ++-- .../operators/pipeline_operator/index.html | 2 +- .../reference/operators/spread_syntax/index.html | 12 +++++----- .../javascript/reference/operators/this/index.html | 26 +++++++++++----------- .../javascript/reference/operators/void/index.html | 2 +- 17 files changed, 68 insertions(+), 68 deletions(-) (limited to 'files/ru/web/javascript/reference/operators') diff --git a/files/ru/web/javascript/reference/operators/addition/index.html b/files/ru/web/javascript/reference/operators/addition/index.html index 94efb4b63e..c55fa767fe 100644 --- a/files/ru/web/javascript/reference/operators/addition/index.html +++ b/files/ru/web/javascript/reference/operators/addition/index.html @@ -8,7 +8,7 @@ translation_of: Web/JavaScript/Reference/Operators/Addition ---
{{jsSidebar("Operators")}}
-

Оператор сложения (+) создает сумму числовых операндов или конкатенацию строк.

+

Оператор сложения (+) создаёт сумму числовых операндов или конкатенацию строк.

{{EmbedInteractiveExample("pages/js/expressions-addition.html")}}
diff --git a/files/ru/web/javascript/reference/operators/await/index.html b/files/ru/web/javascript/reference/operators/await/index.html index ecce9884c5..6159cd8b19 100644 --- a/files/ru/web/javascript/reference/operators/await/index.html +++ b/files/ru/web/javascript/reference/operators/await/index.html @@ -22,7 +22,7 @@ translation_of: Web/JavaScript/Reference/Operators/await

Описание

-

Оператор await заставляет функцию, объявленную с использованием оператора async, ждать выполнения Promise и продолжать выполнение после возвращения Promise значения. Впоследствии возвращает полученное из  Promise значение. Если типом значения, к которому был применен оператор await, является не Promise, то значение приводится к успешно выполненному Promise.

+

Оператор await заставляет функцию, объявленную с использованием оператора async, ждать выполнения Promise и продолжать выполнение после возвращения Promise значения. Впоследствии возвращает полученное из  Promise значение. Если типом значения, к которому был применён оператор await, является не Promise, то значение приводится к успешно выполненному Promise.

Если Promise отклоняется, то await генерирует исключение с отклонённым значением.

@@ -54,7 +54,7 @@ f1(); f2(); -

Если Promise отклонен, то выбрасывается исключение с переданным значением.

+

Если Promise отклонён, то выбрасывается исключение с переданным значением.

async function f3() {
   try {
diff --git a/files/ru/web/javascript/reference/operators/bitwise_and/index.html b/files/ru/web/javascript/reference/operators/bitwise_and/index.html
index 6c08ef0ded..099bbe37cd 100644
--- a/files/ru/web/javascript/reference/operators/bitwise_and/index.html
+++ b/files/ru/web/javascript/reference/operators/bitwise_and/index.html
@@ -72,7 +72,7 @@ translation_of: Web/JavaScript/Reference/Operators/Bitwise_AND
 14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)
 
-

Побитовое И для любого числа x с 0 дает 0.

+

Побитовое И для любого числа x с 0 даёт 0.

Примеры

diff --git a/files/ru/web/javascript/reference/operators/comma_operator/index.html b/files/ru/web/javascript/reference/operators/comma_operator/index.html index 85d739fdab..de9bc91731 100644 --- a/files/ru/web/javascript/reference/operators/comma_operator/index.html +++ b/files/ru/web/javascript/reference/operators/comma_operator/index.html @@ -31,13 +31,13 @@ original_slug: Web/JavaScript/Reference/Operators/Оператор_Запята

Примеры

-

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

+

Если a это двумерный массив элементов размерностью 10 х 10, то приведённый ниже код использует оператор запятая для одновременного изменения двух переменных за раз.

Следующий код выводит в консоль значения диагональных элементов массива:

for (let i = 0, j = 9; i <= 9; i++, j--)
   console.log("a[" + i + "][" + j + "] = " + a[i][j]);
-

Заметьте, что запятая при объявлении переменной varlet или const не является оператором запятая, так как в данном случае она находится не в выражении. Скорее, это спец символ в объявлении переменных, комбинирующий их множество в одно выражение. Практически, эта запятая ведет себя почти так же, как и запятая.

+

Заметьте, что запятая при объявлении переменной varlet или const не является оператором запятая, так как в данном случае она находится не в выражении. Скорее, это спец символ в объявлении переменных, комбинирующий их множество в одно выражение. Практически, эта запятая ведёт себя почти так же, как и запятая.

  // подобное объявление запрещено в строгом режиме(strict mode)
 
diff --git a/files/ru/web/javascript/reference/operators/conditional_operator/index.html b/files/ru/web/javascript/reference/operators/conditional_operator/index.html
index 8b035ad9e4..7eabde0687 100644
--- a/files/ru/web/javascript/reference/operators/conditional_operator/index.html
+++ b/files/ru/web/javascript/reference/operators/conditional_operator/index.html
@@ -42,9 +42,9 @@ original_slug: Web/JavaScript/Reference/Operators/Условный_операт
 
 
var firstCheck = false,
     secondCheck = false,
-    access = firstCheck ? "Доступ запрещен" : secondCheck ? "Доступ запрещен" : "Доступ разрешен";
+    access = firstCheck ? "Доступ запрещён" : secondCheck ? "Доступ запрещён" : "Доступ разрешён";
 
-console.log( access ); // выводит в консоль "Доступ разрешен"
+console.log( access ); // выводит в консоль "Доступ разрешён"

Тернарные операции можно использовать и сами по себе - для выполнения различных операций:

@@ -62,18 +62,18 @@ age > 18 ? ( location.assign("continue.html") ) : ( stop = true, - alert("Простите, вы еще так юны!") + alert("Простите, вы ещё так юны!") ); -

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

+

При присвоении значения также возможно выполнение более одной операции. В этом случае переменной будет присвоено то значение, которое стоит последним в списке значений, разделённых запятой.

var age = 16;
 
 var url = age > 18 ? (
     alert("Хорошо, вы можете продолжить."),
-    // alert вернет "undefined", но это будет проигнорировано, потому что
-    // не является последним в списке значений, разделенных запятой
+    // alert вернёт "undefined", но это будет проигнорировано, потому что
+    // не является последним в списке значений, разделённых запятой
     "continue.html" // значение будет присвоено, если age > 18
 ) : (
     alert("Вы слишком молоды!"),
diff --git a/files/ru/web/javascript/reference/operators/delete/index.html b/files/ru/web/javascript/reference/operators/delete/index.html
index 2edf33b67e..d7722fa829 100644
--- a/files/ru/web/javascript/reference/operators/delete/index.html
+++ b/files/ru/web/javascript/reference/operators/delete/index.html
@@ -64,18 +64,18 @@ delete property // удаляет свойства глобальног
 

delete эффективен только применительно к свойствам объектов. Он не оказывает никакого влияния на имена переменных и функций.
Присвоение значения свойству без указания объекта (без оператора var) иногда неверно характеризуется, как глобальная переменная, (например x = 5). На самом деле происходит присвоение значения свойству глобального объекта.

-

delete не может удалить определенные свойства встроенных объектов (таких как Object, Array, Math и так далее). В спецификации ECMA-262 они обозначены как DontDelete.

+

delete не может удалить определённые свойства встроенных объектов (таких как Object, Array, Math и так далее). В спецификации ECMA-262 они обозначены как DontDelete.

-
x = 42;         // создает свойство x в глобальном объекте
+
x = 42;         // создаёт свойство x в глобальном объекте
 var y = 43;     // объявляет новую переменную, y
 myobj = {};
-myobj.h = 4;    // создает свойство h в myobj
-myobj.k = 5;    // создает свойство k в myobj
+myobj.h = 4;    // создаёт свойство h в myobj
+myobj.k = 5;    // создаёт свойство k в myobj
 
 delete x;       // возвращает true  (x - свойство глобального объекта и может быть удалено)
 delete y;       // возвращает false (delete не влияет на имена переменных)
-delete Math.PI; // возвращает false (delete не влияет на определенные встроенные свойства)
-delete myobj.h; // возвращает true  (свойства, определенные пользователем могут быть удалены)
+delete Math.PI; // возвращает false (delete не влияет на определённые встроенные свойства)
+delete myobj.h; // возвращает true  (свойства, определённые пользователем могут быть удалены)
 
 with(myobj) {
     delete k;   // возвращает true  (эквивалентно delete myobj.k)
@@ -89,7 +89,7 @@ delete myobj;   // возвращает true  (myobj это свойство г
 Foo.prototype.bar = 42;
 var foo = new Foo();
 delete foo.bar;           // возвращает true, но безрезультатно, так как bar - наследуемое свойство
-alert(foo.bar);           // выводит 42, свойство все еще наследуется
+alert(foo.bar);           // выводит 42, свойство все ещё наследуется
 delete Foo.prototype.bar; // удаляет свойство из прототипа
 alert(foo.bar);           // выводит "undefined", свойство больше не наследуется
@@ -106,7 +106,7 @@ if (3 in trees) { // этот участок кода не выполнится }
-

Если Вы хотите, чтобы элемент массива существовал, но имел значение undefined, используйте значение undefined вместо оператора delete. В следующем примере, trees{{ mediawiki.external(3) }} принимает значение undefined, но элемент массива все еще существует:

+

Если Вы хотите, чтобы элемент массива существовал, но имел значение undefined, используйте значение undefined вместо оператора delete. В следующем примере, trees{{ mediawiki.external(3) }} принимает значение undefined, но элемент массива все ещё существует:

var trees = ["redwood","bay","cedar","oak","maple"];
 trees[3]=undefined;
@@ -116,9 +116,9 @@ if (3 in trees) {
 
 

Проблема кроссбраузерности

-

Несмотря на то, что стандарт ECMAScript оставляет порядок итерации по свойствам объектов на усмотрение реализующей стороны, может оказаться так, что все основные браузеры поддерживают порядок итерации, основанный на принципе "свойство добавленное в объект раньше идет раньше" (по крайней мере для свойств не находящихся в прототипе). Однако, в случае с Internet Explorer, когда кто-нибудь использует delete с каким-либо свойством, это приводит к некоторым неожиданным результатам, заставляя другие браузеры отказаться от использования простых объектов, таких как литералы объектов, в качестве ассоциативных массивов. В Internet Explorer, когда значение свойства установлено в undefined, после удаления этого свойства, если кто-нибудь позже добавит свойство с таким же именем, оно окажется в своей старой позиции, а не в конце итерационной последовательности, как ожидается.

+

Несмотря на то, что стандарт ECMAScript оставляет порядок итерации по свойствам объектов на усмотрение реализующей стороны, может оказаться так, что все основные браузеры поддерживают порядок итерации, основанный на принципе "свойство добавленное в объект раньше идёт раньше" (по крайней мере для свойств не находящихся в прототипе). Однако, в случае с Internet Explorer, когда кто-нибудь использует delete с каким-либо свойством, это приводит к некоторым неожиданным результатам, заставляя другие браузеры отказаться от использования простых объектов, таких как литералы объектов, в качестве ассоциативных массивов. В Internet Explorer, когда значение свойства установлено в undefined, после удаления этого свойства, если кто-нибудь позже добавит свойство с таким же именем, оно окажется в своей старой позиции, а не в конце итерационной последовательности, как ожидается.

-

Поэтому, если Вы хотите симулировать упорядоченный ассоциативный массив в кроссбраузерной среде, вам придется либо использовать два отдельных массива (один для ключей и один для значений), либо построить массив из объектов с одним свойством и так далее.

+

Поэтому, если Вы хотите симулировать упорядоченный ассоциативный массив в кроссбраузерной среде, вам придётся либо использовать два отдельных массива (один для ключей и один для значений), либо построить массив из объектов с одним свойством и так далее.

Внешние ссылки

diff --git a/files/ru/web/javascript/reference/operators/in/index.html b/files/ru/web/javascript/reference/operators/in/index.html index 7260b5913e..7570704fb8 100644 --- a/files/ru/web/javascript/reference/operators/in/index.html +++ b/files/ru/web/javascript/reference/operators/in/index.html @@ -58,7 +58,7 @@ var color2 = "coral"; "length" in color2
-

Использование оператора in с неопределенными или с уже удаленными свойствами

+

Использование оператора in с неопределёнными или с уже удалёнными свойствами

Если вы удалили свойство при помощи оператора delete, то оператор in возвратит false для этого свойства.

@@ -71,7 +71,7 @@ delete trees[3]; 3 in trees; // false
-

Если вы зададите свойству значение {{jsxref("Global_Objects/undefined", "undefined")}}, но не удалите его, то для этого свойства оператор in вернет значение true.

+

Если вы зададите свойству значение {{jsxref("Global_Objects/undefined", "undefined")}}, но не удалите его, то для этого свойства оператор in вернёт значение true.

var mycar = {make: "Honda", model: "Accord", year: 1998};
 mycar.make = undefined;
diff --git a/files/ru/web/javascript/reference/operators/instanceof/index.html b/files/ru/web/javascript/reference/operators/instanceof/index.html
index dd264b0a07..a9274710e2 100644
--- a/files/ru/web/javascript/reference/operators/instanceof/index.html
+++ b/files/ru/web/javascript/reference/operators/instanceof/index.html
@@ -109,7 +109,7 @@ myDate instanceof String;   // возвращает false
 
 

Показывает, что mycar имеет тип Car и тип Object

-

Следующий код создает тип Car и экземпляр этого типа, mycar. Оператор instanceof показывает, что объект mycar имеет тип Car и тип Object.

+

Следующий код создаёт тип Car и экземпляр этого типа, mycar. Оператор instanceof показывает, что объект mycar имеет тип Car и тип Object.

function Car(make, model, year) {
   this.make = make;
diff --git a/files/ru/web/javascript/reference/operators/new.target/index.html b/files/ru/web/javascript/reference/operators/new.target/index.html
index bab9b8e956..5feccb7b52 100644
--- a/files/ru/web/javascript/reference/operators/new.target/index.html
+++ b/files/ru/web/javascript/reference/operators/new.target/index.html
@@ -47,8 +47,8 @@ Foo(); // ошибка "Foo() must be called with new"
 
 class B extends A { constructor() { super(); } }
 
-var a = new A(); // вернет "A"
-var b = new B(); // вернет "B"
+var a = new A(); // вернёт "A"
+var b = new B(); // вернёт "B"
 

Спецификации

diff --git a/files/ru/web/javascript/reference/operators/new/index.html b/files/ru/web/javascript/reference/operators/new/index.html index b6f4ed80b7..6afdd75f04 100644 --- a/files/ru/web/javascript/reference/operators/new/index.html +++ b/files/ru/web/javascript/reference/operators/new/index.html @@ -9,7 +9,7 @@ translation_of: Web/JavaScript/Reference/Operators/new ---
{{jsSidebar("Operators")}}
-

Оператор (операторная функция) new создает экземпляр объекта, встроенного или определенного пользователем, имеющего конструктор.

+

Оператор (операторная функция) new создаёт экземпляр объекта, встроенного или определённого пользователем, имеющего конструктор.

Синтаксис

@@ -29,7 +29,7 @@ translation_of: Web/JavaScript/Reference/Operators/new

Описание

-

Создание объекта, определенного пользователем, требует два шага:

+

Создание объекта, определённого пользователем, требует два шага:

  1. Написать функцию, которая задаст тип объекта.
  2. @@ -41,14 +41,14 @@ translation_of: Web/JavaScript/Reference/Operators/new

    Когда исполняется new Foo(...) , происходит следующее:

      -
    1. Создается новый объект, наследующий Foo.prototype.
    2. +
    3. Создаётся новый объект, наследующий Foo.prototype.
    4. Вызывается конструктор — функция Foo с указанными аргументами и this, привязанным к только что созданному объекту. new Foo эквивалентно new Foo(), то есть если аргументы не указаны, Foo вызывается без аргументов.
    5. -
    6. Результатом выражения new становится объект, возвращенный конструктором. Если конструктор не возвращает объект явно, используется объект из п. 1. (Обычно конструкторы не возвращают значение, но они могут делать это, если нужно переопределить обычный процесс создания объектов.)
    7. +
    8. Результатом выражения new становится объект, возвращённый конструктором. Если конструктор не возвращает объект явно, используется объект из п. 1. (Обычно конструкторы не возвращают значение, но они могут делать это, если нужно переопределить обычный процесс создания объектов.)

    Всегда можно добавить свойство к уже созданному объекту. Например, car1.color = "black" добавляет свойство color к объекту car1, и присваивает ему значение "black". Это не затрагивает другие объекты. Чтобы добавить свойство ко всем объектам типа, нужно добавлять его в определение типа Car.

    -

    Добавить свойство к ранее определенному типу можно используя свойство Function.prototype. Это определит свойство для всех объектов, созданных этой функцией, а не только у какого-либо экземпляра. Следующий пример добавляет свойство color со значением null всем объектам типа car, а потом меняет его на  "black" только у экземпляра car1. Больше информации в статье prototype.

    +

    Добавить свойство к ранее определённому типу можно используя свойство Function.prototype. Это определит свойство для всех объектов, созданных этой функцией, а не только у какого-либо экземпляра. Следующий пример добавляет свойство color со значением null всем объектам типа car, а потом меняет его на  "black" только у экземпляра car1. Больше информации в статье prototype.

    function Car() {}
     car1 = new Car();
    @@ -80,7 +80,7 @@ console.log(car1.color);   // black
     
    var mycar = new Car("Eagle", "Talon TSi", 1993);
     
    -

    Это выражение создает экземпляр mycar и присваивает его свойствам указанные значения. Таким образом, mycar.make принимает значение "Eagle", mycar.year принимает значение 1993, и так далее.

    +

    Это выражение создаёт экземпляр mycar и присваивает его свойствам указанные значения. Таким образом, mycar.make принимает значение "Eagle", mycar.year принимает значение 1993, и так далее.

    Можно создать любое количество экземпляров car с помощью оператора new. Например:

    diff --git a/files/ru/web/javascript/reference/operators/nullish_coalescing_operator/index.html b/files/ru/web/javascript/reference/operators/nullish_coalescing_operator/index.html index 71484f05a1..a8482f38c8 100644 --- a/files/ru/web/javascript/reference/operators/nullish_coalescing_operator/index.html +++ b/files/ru/web/javascript/reference/operators/nullish_coalescing_operator/index.html @@ -131,7 +131,7 @@ console.log(foo.someBarProp?.toUpperCase()); // undefined

    Прогресс реализации

    -

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

    +

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

    {{EmbedTest262ReportResultsTable("coalesce-expression")}}
    diff --git a/files/ru/web/javascript/reference/operators/object_initializer/index.html b/files/ru/web/javascript/reference/operators/object_initializer/index.html index 5f8d445e0d..8487de375a 100644 --- a/files/ru/web/javascript/reference/operators/object_initializer/index.html +++ b/files/ru/web/javascript/reference/operators/object_initializer/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Operators/Object_initializer ---
    {{JsSidebar("Операторы")}}
    -

    Объекты могут быть инициализированы с помощью new Object(), Object.create() или литеральной (инициирующей) нотации. Инициализатор объекта это разделенный запятыми список ноль или более пар имен свойств и ассоциируемых с ними значений, заключенных в фигурные скобки ({}).

    +

    Объекты могут быть инициализированы с помощью new Object(), Object.create() или литеральной (инициирующей) нотации. Инициализатор объекта это разделённый запятыми список ноль или более пар имён свойств и ассоциируемых с ними значений, заключённых в фигурные скобки ({}).

    Синтаксис

    @@ -26,16 +26,16 @@ var o = {

    Пожалуйста, просмотрите таблицу поддержки этих нотаций. В неподдерживаемом окружении, эти нотации приведут к синтаксической ошибке.

    -
    // Сокращение имен свойств (ES2015)
    +
    // Сокращение имён свойств (ES2015)
     var a = 'foo', b = 42, c = {};
     var o = {a, b, c};
     
    -// Сокращение имен методов (ES2015)
    +// Сокращение имён методов (ES2015)
     var o = {
       property([parameters]) {}
     };
     
    -// Вычисление имен свойств (ES2015)
    +// Вычисление имён свойств (ES2015)
     var prop = 'foo';
     var o = {
       [prop]: 'hey',
    @@ -52,7 +52,7 @@ var o = {
     
     
    var object = {};
    -

    Однако, преимущество литеральной или инициирующей нотации это возможность быстро создавать объекты со свойствами внутри фигурных скобок. Создается простой список пар ключ: значение, разделенных запятой. Следующий код создает объект с тремя парами значений и ключи это "foo", "age" и "baz". Значения этих ключей строка "bar", число 42 и другой объект.

    +

    Однако, преимущество литеральной или инициирующей нотации это возможность быстро создавать объекты со свойствами внутри фигурных скобок. Создаётся простой список пар ключ: значение, разделённых запятой. Следующий код создаёт объект с тремя парами значений и ключи это "foo", "age" и "baz". Значения этих ключей строка "bar", число 42 и другой объект.

    var object = {
       foo: 'bar',
    @@ -90,14 +90,14 @@ var o = {
         b = 42,
         c = {};
     
    -// Сокращение имен свойств (ES2015)
    +// Сокращение имён свойств (ES2015)
     var o = {a, b, c};
     
     // Иначе говоря,
     console.log((o.a === {a}.a)); // true
     
    -

    Повторение имен свойств

    +

    Повторение имён свойств

    Когда используются одинаковые имена свойств, второе свойство перезапишет первое.

    @@ -105,14 +105,14 @@ console.log((o.a === {a}.a)); // true console.log(a); // {x: 2}
    -

    В строгом режиме ECMAScript 5, повторение имен свойств будет воспринято как {{jsxref("SyntaxError")}}.  С введением вычисляемых имен свойств и появлением возможности создавать дубликаты во время выполнения кода, ECMAScript 2015 убрал это ограничение.

    +

    В строгом режиме ECMAScript 5, повторение имён свойств будет воспринято как {{jsxref("SyntaxError")}}.  С введением вычисляемых имён свойств и появлением возможности создавать дубликаты во время выполнения кода, ECMAScript 2015 убрал это ограничение.

    function haveES2015DuplicatePropertySemantics() {
       'use strict';
       try {
         ({prop: 1, prop: 2});
     
    -    // Не будет ошибки, повторение имен доступно в строгом режиме
    +    // Не будет ошибки, повторение имён доступно в строгом режиме
         return true;
       } catch(e) {
         // Будет ошибка, дубликаты запрещены в строгом режиме
    @@ -132,7 +132,7 @@ console.log(a); // {x: 2}
     
     

    В ECMAScript 2015, доступна короткая нотация, поэтому слово "function" более не обязательно.

    -
    // Сокращение имен методов (ES2015)
    +
    // Сокращение имён методов (ES2015)
     var o = {
       property([parameters]) {},
       *generator() {}
    @@ -243,7 +243,7 @@ assert(obj3.__proto__ === 17);
      
  3. В JSON значения могут быть только строками, числами, массивами, true, false, null или другими (JSON) объектами.
  4. Значения-функции (смотри "Методы" выше) не могут быть присвоены свойствам в JSON.
  5. Объект вида {{jsxref("Date")}} будет строкой после {{jsxref("JSON.parse()")}}.
  6. -
  7. {{jsxref("JSON.parse()")}} отклонит вычисляемые имена свойств и вернет ошибку.
  8. +
  9. {{jsxref("JSON.parse()")}} отклонит вычисляемые имена свойств и вернёт ошибку.
  10. Спецификации

    diff --git a/files/ru/web/javascript/reference/operators/optional_chaining/index.html b/files/ru/web/javascript/reference/operators/optional_chaining/index.html index 959d17c800..b82d793eee 100644 --- a/files/ru/web/javascript/reference/operators/optional_chaining/index.html +++ b/files/ru/web/javascript/reference/operators/optional_chaining/index.html @@ -48,7 +48,7 @@ let nestedProp = ((temp === null || temp === undefined) ? undefined : temp.secon

    Вы можете использовать ?.когда необходимо вызвать метод, которого может не существовать. Это может быть полезно, например, при использовании API, в котором метод может быть недоступен из-за устаревания или не поддерживаем ости устройством пользователя.

    -

    Использование ?. с вызовом функции значит, что выполнение автоматически вернет undefined, а не выбросит исключение, если метод не найден:

    +

    Использование ?. с вызовом функции значит, что выполнение автоматически вернёт undefined, а не выбросит исключение, если метод не найден:

    let result = someInterface.customMethod?.();
    @@ -101,7 +101,7 @@ myMap.set("foo", {name: "baz", desc: "inga"}); let nameBar = myMap.get("bar")?.name;
    -

    Сокращенное выполнение

    +

    Сокращённое выполнение

    При использовании оператора опциональной последовательности в выражениях, где левая часть операнда равна null или undefined, выражение не будет выполнено. Например:

    diff --git a/files/ru/web/javascript/reference/operators/pipeline_operator/index.html b/files/ru/web/javascript/reference/operators/pipeline_operator/index.html index ec069c9e24..3fee1a8a0d 100644 --- a/files/ru/web/javascript/reference/operators/pipeline_operator/index.html +++ b/files/ru/web/javascript/reference/operators/pipeline_operator/index.html @@ -58,7 +58,7 @@ double(increment(double(double(5)))); // 42 Pipeline operator draft Этап 1 - Еще не включен в спецификацию ECMAScript. + Ещё не включён в спецификацию ECMAScript. diff --git a/files/ru/web/javascript/reference/operators/spread_syntax/index.html b/files/ru/web/javascript/reference/operators/spread_syntax/index.html index c96be61337..1019bdd757 100644 --- a/files/ru/web/javascript/reference/operators/spread_syntax/index.html +++ b/files/ru/web/javascript/reference/operators/spread_syntax/index.html @@ -44,7 +44,7 @@ translation_of: Web/JavaScript/Reference/Operators/Spread_syntax var args = [0, 1, 2]; myFunction.apply(null, args);
    -

    С spread syntax вышеприведенное можно записать как:

    +

    С spread syntax вышеприведённое можно записать как:

    function myFunction(x, y, z) { }
     var args = [0, 1, 2];
    @@ -58,7 +58,7 @@ myFunction(-1, ...args, 2, ...[3]);

    Apply для new

    -

    Вызывая конструктор через ключевое слово new, невозможно использовать массив и apply напрямую (apply выполняет [[Call]], а не [[Construct]]).Однако благодаря spread syntax, массив может быть с легкостью использован со словом new:

    +

    Вызывая конструктор через ключевое слово new, невозможно использовать массив и apply напрямую (apply выполняет [[Call]], а не [[Construct]]).Однако благодаря spread syntax, массив может быть с лёгкостью использован со словом new:

    var dateFields = [1970, 0, 1];  // 1 Jan 1970
     var d = new Date(...dateFields);
    @@ -103,7 +103,7 @@ var lyrics = ['head', ...parts, 'and', 'toes'];
     // ["head", "shoulders", "knees", "and", "toes"]
     
    -

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

    +

    Аналогично развёртыванию в массиве аргументов, ... может быть использован повсеместно и многократно в литерале массива.

    Копирование массива

    @@ -147,7 +147,7 @@ var arr2 = [3, 4, 5]; // Prepend all items from arr2 onto arr1 Array.prototype.unshift.apply(arr1, arr2) // arr1 is now [3, 4, 5, 0, 1, 2]
    -

    С использованием spread syntax [Следует отметить, что такой способ создает новый массив arr1. В отличие от {{jsxref("Array.unshift")}}, исходный массив не мутируется]:

    +

    С использованием spread syntax [Следует отметить, что такой способ создаёт новый массив arr1. В отличие от {{jsxref("Array.unshift")}}, исходный массив не мутируется]:

    var arr1 = [0, 1, 2];
     var arr2 = [3, 4, 5];
    @@ -183,11 +183,11 @@ var mergedObj = merge ( obj1, obj2);
     var mergedObj = merge ( {}, obj1, obj2);
     // Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }
    -

    В приведенном выше примере оператор распространения не работает так, как можно было бы ожидать: он распространяет массив аргументов в литерал объекта благодаря параметру rest.

    +

    В приведённом выше примере оператор распространения не работает так, как можно было бы ожидать: он распространяет массив аргументов в литерал объекта благодаря параметру rest.

    Только для итерируемых объектов

    -

    Spread syntax ( кроме случаев spread properties) может быть применен только к итерируемым объектам (iterable objects) :

    +

    Spread syntax ( кроме случаев spread properties) может быть применён только к итерируемым объектам (iterable objects) :

    var obj = {'key1': 'value1'};
     var array = [...obj]; // TypeError: obj is not iterable
    diff --git a/files/ru/web/javascript/reference/operators/this/index.html b/files/ru/web/javascript/reference/operators/this/index.html
    index 59761d890e..b373d12fa1 100644
    --- a/files/ru/web/javascript/reference/operators/this/index.html
    +++ b/files/ru/web/javascript/reference/operators/this/index.html
    @@ -13,7 +13,7 @@ translation_of: Web/JavaScript/Reference/Operators/this
     
     

    Поведение ключевого слова this в JavaScript несколько отличается по сравнению с остальными языками. Имеются также различия при использовании this в строгом и нестрогом режиме.

    -

    В большинстве случаев значение this определяется тем, каким образом вызвана функция. Значение this не может быть установлено путем присваивания во время исполнения кода и может иметь разное значение при каждом вызове функции. В ES5 представлен метод {{jsxref('Function.prototype.bind()', 'bind()')}}, который используется для {{jsxref('Operators/this','привязки значения ключевого слова this независимо от того, как вызвана функция','Метод_bind')}}. Также в ES2015 представлены {{jsxref('Functions/Arrow_functions', 'стрелочные функции')}}, которые не создают собственные привязки к this (они сохраняют значение this лексического окружения, в котором были созданы).

    +

    В большинстве случаев значение this определяется тем, каким образом вызвана функция. Значение this не может быть установлено путём присваивания во время исполнения кода и может иметь разное значение при каждом вызове функции. В ES5 представлен метод {{jsxref('Function.prototype.bind()', 'bind()')}}, который используется для {{jsxref('Operators/this','привязки значения ключевого слова this независимо от того, как вызвана функция','Метод_bind')}}. Также в ES2015 представлены {{jsxref('Functions/Arrow_functions', 'стрелочные функции')}}, которые не создают собственные привязки к this (они сохраняют значение this лексического окружения, в котором были созданы).

    {{EmbedInteractiveExample("pages/js/expressions-this.html")}}
    @@ -65,7 +65,7 @@ f1() === window; // window - глобальный объект в браузер f1() === global; // global - глобальный объект в Node
    -

    В строгом режиме, если значение this не установлено в контексте выполнения, оно остается undefined, как показано в следующем примере:

    +

    В строгом режиме, если значение this не установлено в контексте выполнения, оно остаётся undefined, как показано в следующем примере:

    function f2(){
       "use strict"; // см. strict mode
    @@ -77,7 +77,7 @@ f2() === undefined; // true
     
     
    Во втором примере this должно иметь значение {{jsxref("undefined")}}, потому что функция f2 была вызвана напрямую, а не как метод или свойство объекта (например, window.f2()). Реализация этой особенности не поддерживалась в некоторых браузерах, когда они впервые начали поддерживать {{jsxref('Strict_mode', 'строгий режим')}}. В результате они некорректно возвращали объект window.
    -

    Для того, чтобы при вызове функции установить this в определенное значение, используйте {{jsxref('Function.prototype.call()', 'call()')}} или {{jsxref('Function.prototype.apply()', 'apply()')}}, как в следующих примерах.

    +

    Для того, чтобы при вызове функции установить this в определённое значение, используйте {{jsxref('Function.prototype.call()', 'call()')}} или {{jsxref('Function.prototype.apply()', 'apply()')}}, как в следующих примерах.

    Пример 1

    @@ -128,7 +128,7 @@ bar.call('foo'); // [object String]

    Метод bind

    -

    ECMAScript 5 представил {{jsxref("Function.prototype.bind()")}}. Вызов f.bind(someObject) создает новую функцию с тем же телом и областью действия, что и f, но там, где в исходной функции используется this, в новой функции оно постоянно будет связано с первым аргументом bind, независимо от того, как функция используется.

    +

    ECMAScript 5 представил {{jsxref("Function.prototype.bind()")}}. Вызов f.bind(someObject) создаёт новую функцию с тем же телом и областью действия, что и f, но там, где в исходной функции используется this, в новой функции оно постоянно будет связано с первым аргументом bind, независимо от того, как функция используется.

    function f() {
       return this.a;
    @@ -155,7 +155,7 @@ console.log(foo() === globalObject); // true

    Note: если аргумент this передаётся в call, bind или apply при вызове стрелочной функции, он будет проигнорирован. Вы всё ещё можете добавить аргументы к вызову, но первый аргумент (thisArg) должен быть установлен в null.

    -

    Неважно, как стрелочная функция foo() будет вызвана, её значение this будет указывать на глобальный объект. this будет сохранять свое значение, даже если функция foo() будет вызвана как метод объекта (что в обычных функциях связывает this с объектом вызова) или с использованием методов call, apply или bind:

    +

    Неважно, как стрелочная функция foo() будет вызвана, её значение this будет указывать на глобальный объект. this будет сохранять своё значение, даже если функция foo() будет вызвана как метод объекта (что в обычных функциях связывает this с объектом вызова) или с использованием методов call, apply или bind:

    // Вызов функции как метода объекта
     var obj = {foo: foo};
    @@ -170,7 +170,7 @@ console.log(foo() === globalObject); // true

    Несмотря ни на что, this стрелочной функции foo() имеет то же значение, что и при создании функции (глобальный объект в примере выше). То же самое касается стрелочных функций, созданных внутри других функций: их this будет привязан к окружению.

    -
    // Создаем объект obj, содержащий метод bar, который возвращает функцию,
    +
    // Создаём объект obj, содержащий метод bar, который возвращает функцию,
     // которая возвращает свой this. Возвращаемая функция создана
     // как стрелочная функция, таким образом её this постоянно замкнут
     // на this функции, в которой она создана. Значение bar может быть установлено
    @@ -195,7 +195,7 @@ var fn2 = obj.bar;
     // потому что он следует за this из fn2.
     console.log(fn2()() == window); // true
    -

    В примере выше, функция (назовем её анонимной функцией A), присвоенная методу obj.bar, возвращает другую функцию (назовем её анонимной функцией B) которая создана как стрелочная функция. В результате, this функции B при вызове замкнут на this, принадлежащий obj.bar (функции A). this функции B всегда будет иметь то значение, которое он получил при создании. В примере выше, this функции B указывает на this функции A,которым является obj, таким образом this будет равен obj даже тогда, когда будет вызван методом, который в нормальных условиях устанавливал бы значение this равным undefined или глобальному объекту (или любым другим методом, как в предыдущем примере в глобальном контексте выполнения).

    +

    В примере выше, функция (назовём её анонимной функцией A), присвоенная методу obj.bar, возвращает другую функцию (назовём её анонимной функцией B) которая создана как стрелочная функция. В результате, this функции B при вызове замкнут на this, принадлежащий obj.bar (функции A). this функции B всегда будет иметь то значение, которое он получил при создании. В примере выше, this функции B указывает на this функции A,которым является obj, таким образом this будет равен obj даже тогда, когда будет вызван методом, который в нормальных условиях устанавливал бы значение this равным undefined или глобальному объекту (или любым другим методом, как в предыдущем примере в глобальном контексте выполнения).

    В методе объекта

    @@ -213,7 +213,7 @@ console.log(fn2()() == window); // true
    console.log(o.f()); // logs 37
    -

    Необходимо отметить, что на поведение this совсем не влияет то, как или где была определена функция. В предыдущем примере мы определили функцию внутри свойства f во время определения объекта o. Однако, мы могли бы также просто определить сначала функцию, а затем закрепить ее за за свойством o.f. В этом случае поведение this не изменится:

    +

    Необходимо отметить, что на поведение this совсем не влияет то, как или где была определена функция. В предыдущем примере мы определили функцию внутри свойства f во время определения объекта o. Однако, мы могли бы также просто определить сначала функцию, а затем закрепить её за за свойством o.f. В этом случае поведение this не изменится:

    var o = {prop: 37};
     
    @@ -236,7 +236,7 @@ console.log(o.b.g()); // logs 42
     
     

    this в цепочке object's prototype

    -

    Это же представление справедливо и для методов, определенных где-либо в цепочке object's prototype. Если метод находится в цепочке прототипов, то this ссылается на объект, на котором был вызван метод, т.е. так, словно метод является методом самого объекта, а не прототипа.

    +

    Это же представление справедливо и для методов, определённых где-либо в цепочке object's prototype. Если метод находится в цепочке прототипов, то this ссылается на объект, на котором был вызван метод, т.е. так, словно метод является методом самого объекта, а не прототипа.

    var o = {f:function(){ return this.a + this.b; }};
     var p = Object.create(o);
    @@ -274,7 +274,7 @@ console.log(o.phase, o.modulus); // logs -0.78 1.4142
     
     

    Когда функция используется как конструктор (с ключевым словом new ), this связано с создаваемым новым объектом.

    -

    Примечание: по умолчанию конструктор возвращает объект, на который ссылается this, но он может вернуть и другой объект (если возвращаемое значение не является объектом, тогда будет возвращен объект с this).

    +

    Примечание: по умолчанию конструктор возвращает объект, на который ссылается this, но он может вернуть и другой объект (если возвращаемое значение не является объектом, тогда будет возвращён объект с this).

    /*
      * Конструктор работает таким образом:
    @@ -312,7 +312,7 @@ o = new C2();
     console.log(o.a); // logs 38
     
    -

    В последнем примере (C2), из-за того, что конструктор вернул объект, новый объект, к которому было привязано this, был просто отброшен. (Это фактически делает выражение "this.a = 37;" "мертвым" кодом. Он не является буквально нерабочим, так как он выполняется, но он может быть изъят без каких-либо внешних эффектов.)

    +

    В последнем примере (C2), из-за того, что конструктор вернул объект, новый объект, к которому было привязано this, был просто отброшен. (Это фактически делает выражение "this.a = 37;" "мёртвым" кодом. Он не является буквально нерабочим, так как он выполняется, но он может быть изъят без каких-либо внешних эффектов.)

    call и apply

    @@ -335,7 +335,7 @@ add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16 add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
    -

    Необходимо отметить, что если методам call и apply передается значение с this, которое не является при этом объектом, будет предпринята попытка конвертировать значение в объект, используя внутреннюю операцию ToObject. Если переданное значение является примитивным типом, например 7 или 'foo', оно будет преобразовано в объект с использованием родственного конструктора, так примитив 7 преобразовывается в объект через new Number(7), а строка 'foo' в объект через new String('foo'), и т.д.

    +

    Необходимо отметить, что если методам call и apply передаётся значение с this, которое не является при этом объектом, будет предпринята попытка конвертировать значение в объект, используя внутреннюю операцию ToObject. Если переданное значение является примитивным типом, например 7 или 'foo', оно будет преобразовано в объект с использованием родственного конструктора, так примитив 7 преобразовывается в объект через new Number(7), а строка 'foo' в объект через new String('foo'), и т.д.

    function bar() {
       console.log(Object.prototype.toString.call(this));
    @@ -382,7 +382,7 @@ for (var i = 0; i < elements.length; i++) {
     </button>
     
    -

    В этом случае this вложенной функции не будет установлен, так что будет возвращен global/window объект.

    +

    В этом случае this вложенной функции не будет установлен, так что будет возвращён global/window объект.

    Спецификации

    diff --git a/files/ru/web/javascript/reference/operators/void/index.html b/files/ru/web/javascript/reference/operators/void/index.html index e415aacae7..998c138972 100644 --- a/files/ru/web/javascript/reference/operators/void/index.html +++ b/files/ru/web/javascript/reference/operators/void/index.html @@ -41,7 +41,7 @@ translation_of: Web/JavaScript/Reference/Operators/void

    JavaScript URIs

    -

    Когда браузер переходит по javascript: URI, он вычисляет код в URI и заменяет содержание страницы возвращенным значением, если оно не равно {{jsxref("Global_Objects/undefined", "undefined")}}. Можно воспользоваться оператором void для возврата {{jsxref("Global_Objects/undefined", "undefined")}}. Например:

    +

    Когда браузер переходит по javascript: URI, он вычисляет код в URI и заменяет содержание страницы возвращённым значением, если оно не равно {{jsxref("Global_Objects/undefined", "undefined")}}. Можно воспользоваться оператором void для возврата {{jsxref("Global_Objects/undefined", "undefined")}}. Например:

    <a href="javascript:void(0);">
       Click here to do nothing
    -- 
    cgit v1.2.3-54-g00ecf