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/classes/constructor/index.html | 8 +++---- .../reference/classes/extends/index.html | 2 +- .../ru/web/javascript/reference/classes/index.html | 26 +++++++++++----------- .../classes/private_class_fields/index.html | 4 ++-- .../classes/public_class_fields/index.html | 2 +- .../javascript/reference/classes/static/index.html | 2 +- .../reference/errors/already_has_pragma/index.html | 2 +- .../reference/errors/bad_radix/index.html | 2 +- .../reference/errors/bad_regexp_flag/index.html | 2 +- .../errors/bad_return_or_yield/index.html | 2 +- .../errors/called_on_incompatible_type/index.html | 2 +- .../index.html | 2 +- .../errors/cant_access_property/index.html | 20 ++++++++--------- .../reference/errors/cant_delete/index.html | 4 ++-- .../errors/cant_redefine_property/index.html | 8 +++---- .../errors/cyclic_object_value/index.html | 2 +- .../reference/errors/dead_object/index.html | 12 +++++----- .../errors/delete_in_strict_mode/index.html | 6 ++--- .../deprecated_expression_closures/index.html | 4 ++-- .../errors/deprecated_string_generics/index.html | 6 ++--- .../errors/deprecated_tolocaleformat/index.html | 4 ++-- .../reference/errors/equal_as_assign/index.html | 2 +- .../for-each-in_loops_are_deprecated/index.html | 4 ++-- .../reference/errors/getter_only/index.html | 6 ++--- .../errors/identifier_after_number/index.html | 4 ++-- .../errors/in_operator_no_object/index.html | 4 ++-- .../ru/web/javascript/reference/errors/index.html | 4 ++-- .../errors/invalid_const_assignment/index.html | 4 ++-- .../errors/invalid_for-in_initializer/index.html | 4 ++-- .../reference/errors/is_not_iterable/index.html | 6 ++--- .../errors/malformed_formal_parameter/index.html | 2 +- .../errors/missing_bracket_after_list/index.html | 2 +- .../missing_colon_after_property_id/index.html | 2 +- .../missing_curly_after_function_body/index.html | 4 ++-- .../index.html | 2 +- .../reference/errors/no_variable_name/index.html | 2 +- .../non_configurable_array_element/index.html | 10 ++++----- .../reference/errors/not_a_codepoint/index.html | 2 +- .../reference/errors/not_a_constructor/index.html | 2 +- .../reference/errors/not_defined/index.html | 4 ++-- .../reference/errors/read-only/index.html | 4 ++-- .../errors/redeclared_parameter/index.html | 4 ++-- .../errors/reserved_identifier/index.html | 2 +- .../errors/strict_non_simple_params/index.html | 4 ++-- .../reference/errors/unexpected_token/index.html | 4 ++-- .../reference/errors/unexpected_type/index.html | 4 ++-- .../errors/unnamed_function_statement/index.html | 4 ++-- .../errors/unterminated_string_literal/index.html | 6 ++--- .../reference/errors/var_hides_argument/index.html | 2 +- .../functions/arguments/callee/index.html | 2 +- .../reference/functions/arguments/index.html | 8 +++---- .../reference/functions/arrow_functions/index.html | 4 ++-- .../functions/default_parameters/index.html | 10 ++++----- .../javascript/reference/functions/get/index.html | 8 +++---- .../functions/method_definitions/index.html | 2 +- .../javascript/reference/functions/set/index.html | 6 ++--- .../global_objects/array/concat/index.html | 2 +- .../global_objects/array/every/index.html | 2 +- .../reference/global_objects/array/fill/index.html | 2 +- .../global_objects/array/filter/index.html | 2 +- .../reference/global_objects/array/find/index.html | 2 +- .../reference/global_objects/array/flat/index.html | 4 ++-- .../global_objects/array/foreach/index.html | 6 ++--- .../reference/global_objects/array/keys/index.html | 2 +- .../global_objects/array/lastindexof/index.html | 2 +- .../reference/global_objects/array/map/index.html | 2 +- .../global_objects/array/reduce/index.html | 2 +- .../global_objects/array/reverse/index.html | 4 ++-- .../global_objects/array/slice/index.html | 8 +++---- .../reference/global_objects/array/some/index.html | 2 +- .../reference/global_objects/array/sort/index.html | 2 +- .../global_objects/arraybuffer/index.html | 14 ++++++------ .../global_objects/arraybuffer/slice/index.html | 2 +- .../global_objects/asyncfunction/index.html | 6 ++--- .../global_objects/atomics/add/index.html | 4 ++-- .../reference/global_objects/atomics/index.html | 8 +++---- .../global_objects/atomics/sub/index.html | 4 ++-- .../reference/global_objects/bigint/index.html | 14 ++++++------ .../reference/global_objects/date/index.html | 2 +- .../global_objects/date/setminutes/index.html | 2 +- .../global_objects/date/toutcstring/index.html | 2 +- .../global_objects/decodeuricomponent/index.html | 2 +- .../reference/global_objects/encodeuri/index.html | 2 +- .../global_objects/encodeuricomponent/index.html | 2 +- .../reference/global_objects/error/index.html | 2 +- .../reference/global_objects/escape/index.html | 2 +- .../reference/global_objects/eval/index.html | 14 ++++++------ .../global_objects/float32array/index.html | 2 +- .../global_objects/function/bind/index.html | 8 +++---- .../reference/global_objects/function/index.html | 2 +- .../global_objects/function/name/index.html | 8 +++---- .../reference/global_objects/generator/index.html | 2 +- .../global_objects/generator/throw/index.html | 4 ++-- .../global_objects/generatorfunction/index.html | 4 ++-- .../reference/global_objects/globalthis/index.html | 2 +- .../reference/global_objects/intl/index.html | 2 +- .../reference/global_objects/isfinite/index.html | 4 ++-- .../reference/global_objects/map/delete/index.html | 2 +- .../global_objects/map/entries/index.html | 2 +- .../global_objects/map/foreach/index.html | 2 +- .../reference/global_objects/map/get/index.html | 4 ++-- .../reference/global_objects/map/index.html | 4 ++-- .../reference/global_objects/math/sqrt/index.html | 2 +- .../reference/global_objects/nan/index.html | 2 +- .../reference/global_objects/null/index.html | 6 ++--- .../global_objects/object/create/index.html | 6 ++--- .../global_objects/object/entries/index.html | 2 +- .../global_objects/object/fromentries/index.html | 2 +- .../object/getownpropertydescriptors/index.html | 2 +- .../global_objects/object/values/index.html | 2 +- .../reference/global_objects/parsefloat/index.html | 8 +++---- .../reference/global_objects/parseint/index.html | 4 ++-- .../global_objects/promise/all/index.html | 10 ++++----- .../global_objects/promise/any/index.html | 12 +++++----- .../global_objects/promise/catch/index.html | 6 ++--- .../global_objects/promise/finally/index.html | 8 +++---- .../reference/global_objects/promise/index.html | 16 ++++++------- .../global_objects/promise/race/index.html | 6 ++--- .../global_objects/promise/reject/index.html | 6 ++--- .../global_objects/promise/resolve/index.html | 2 +- .../global_objects/promise/then/index.html | 8 +++---- .../global_objects/reflect/construct/index.html | 2 +- .../reference/global_objects/reflect/index.html | 2 +- .../global_objects/reflect/ownkeys/index.html | 2 +- .../global_objects/regexp/@@split/index.html | 2 +- .../reference/global_objects/regexp/index.html | 4 ++-- .../global_objects/regexp/lastmatch/index.html | 2 +- .../reference/global_objects/regexp/n/index.html | 4 ++-- .../global_objects/regexp/unicode/index.html | 2 +- .../reference/global_objects/set/delete/index.html | 10 ++++----- .../global_objects/set/foreach/index.html | 2 +- .../reference/global_objects/set/set/index.html | 2 +- .../global_objects/sharedarraybuffer/index.html | 10 ++++----- .../global_objects/string/match/index.html | 2 +- .../global_objects/string/matchall/index.html | 2 +- .../global_objects/string/padend/index.html | 6 ++--- .../global_objects/string/replaceall/index.html | 10 ++++----- .../global_objects/string/slice/index.html | 8 +++---- .../reference/global_objects/symbol/for/index.html | 2 +- .../reference/global_objects/symbol/index.html | 14 ++++++------ .../global_objects/symbol/toprimitive/index.html | 2 +- .../reference/global_objects/typedarray/index.html | 4 ++-- .../reference/global_objects/unescape/index.html | 2 +- .../reference/global_objects/uneval/index.html | 2 +- .../global_objects/weakmap/clear/index.html | 2 +- .../global_objects/weakmap/delete/index.html | 2 +- .../reference/global_objects/weakmap/index.html | 2 +- .../global_objects/webassembly/compile/index.html | 2 +- .../webassembly/compilestreaming/index.html | 6 ++--- .../global_objects/webassembly/index.html | 22 +++++++++--------- .../global_objects/webassembly/table/index.html | 14 ++++++------ .../reference/iteration_protocols/index.html | 6 ++--- .../reference/lexical_grammar/index.html | 10 ++++----- .../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 +- .../reference/statements/async_function/index.html | 6 ++--- .../reference/statements/block/index.html | 4 ++-- .../reference/statements/class/index.html | 4 ++-- .../reference/statements/do...while/index.html | 4 ++-- .../reference/statements/empty/index.html | 2 +- .../reference/statements/for-await...of/index.html | 2 +- .../reference/statements/for...in/index.html | 2 +- .../reference/statements/for...of/index.html | 6 ++--- .../javascript/reference/statements/for/index.html | 2 +- .../reference/statements/import/index.html | 14 ++++++------ .../javascript/reference/statements/let/index.html | 16 ++++++------- .../reference/statements/return/index.html | 2 +- .../reference/statements/throw/index.html | 24 ++++++++++---------- .../reference/statements/try...catch/index.html | 2 +- .../javascript/reference/statements/var/index.html | 10 ++++----- .../reference/statements/while/index.html | 2 +- .../reference/statements/with/index.html | 2 +- .../javascript/reference/strict_mode/index.html | 24 ++++++++++---------- .../transitioning_to_strict_mode/index.html | 8 +++---- 189 files changed, 495 insertions(+), 495 deletions(-) (limited to 'files/ru/web/javascript/reference') diff --git a/files/ru/web/javascript/reference/classes/constructor/index.html b/files/ru/web/javascript/reference/classes/constructor/index.html index 7d7fe14e82..ea52fc5371 100644 --- a/files/ru/web/javascript/reference/classes/constructor/index.html +++ b/files/ru/web/javascript/reference/classes/constructor/index.html @@ -70,7 +70,7 @@ try {

ValidationError классу не нужен явный (explicit) конструктор, потому что не требуется инициализация. Затем конструктор по умолчанию позаботится о инициализации родительского класса Error переданным ему аргументом.

-

Однако, если определен ваш собственный конструктор и ваш класс является производным от какого-либо родительского класса, то вы должны явно объявить конструктор родительского класса, используя super. К примеру:

+

Однако, если определён ваш собственный конструктор и ваш класс является производным от какого-либо родительского класса, то вы должны явно объявить конструктор родительского класса, используя super. К примеру:

class ValidationError extends Error {
 
@@ -109,7 +109,7 @@ try {
 
class Square extends Polygon {
   constructor(length) {
     // Здесь вызывается конструктор родительского класса,
-    // в который передается length в качестве аргументов,
+    // в который передаётся length в качестве аргументов,
     // соответствующим полям width и height класса Polygon
     super(length, length);
     // Заметка: В производном классе, super() должен вызываться перед тем как
@@ -152,7 +152,7 @@ console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //
 let newInstance = new Square();
 console.log(newInstance.name); //Polygon
-

Здесь прототип Square класса изменен, но в то же время constructor предыдущего базового класса Polygon вызывается при создании нового экземпляра Square.

+

Здесь прототип Square класса изменён, но в то же время constructor предыдущего базового класса Polygon вызывается при создании нового экземпляра Square.

Constructors по умолчанию.

@@ -190,7 +190,7 @@ console.log(newInstance.name); //Polygon

Совместимость с браузерами

- +

{{Compat("javascript.classes.constructor")}}

diff --git a/files/ru/web/javascript/reference/classes/extends/index.html b/files/ru/web/javascript/reference/classes/extends/index.html index df642e9e23..d774cc72b0 100644 --- a/files/ru/web/javascript/reference/classes/extends/index.html +++ b/files/ru/web/javascript/reference/classes/extends/index.html @@ -30,7 +30,7 @@ translation_of: Web/JavaScript/Reference/Classes/extends
class Square extends Polygon {
   constructor(length) {
     // Здесь вызывается конструктор родительского класса,
-    // в который передается свойство length в качестве
+    // в который передаётся свойство length в качестве
     // аргументов, соответствующих полям width и height,
     // класса Polygon
     super(length, length);
diff --git a/files/ru/web/javascript/reference/classes/index.html b/files/ru/web/javascript/reference/classes/index.html
index 8711331ffc..8b64f585f0 100644
--- a/files/ru/web/javascript/reference/classes/index.html
+++ b/files/ru/web/javascript/reference/classes/index.html
@@ -68,7 +68,7 @@ console.log(Rectangle.name);
 
 

Тело класса и задание методов

-

Тело класса — это часть кода, заключенная в фигурные скобки {}. Здесь вы можете объявлять члены класса, такие как методы и конструктор.

+

Тело класса — это часть кода, заключённая в фигурные скобки {}. Здесь вы можете объявлять члены класса, такие как методы и конструктор.

Строгий режим

@@ -154,7 +154,7 @@ Animal.eat() // класс Animal let eat = Animal.eat; eat(); // undefined
-

Если мы напишем этот же код используя классы основанные на функциях, тогда произойдет автоупаковка основанная на значении this, в течение которого функция была вызвана. В строгом режиме автоупаковка не произойдет - значение this останется прежним.

+

Если мы напишем этот же код используя классы основанные на функциях, тогда произойдёт автоупаковка основанная на значении this, в течение которого функция была вызвана. В строгом режиме автоупаковка не произойдёт - значение this останется прежним.

function Animal() { }
 
@@ -199,7 +199,7 @@ Rectangle.prototype.prototypeWidth = 25;
 
 

Публичные поля

-

Используя Javascript синтаксис определения полей, приведенный выше пример может быть изменен следующим образом:

+

Используя Javascript синтаксис определения полей, приведённый выше пример может быть изменён следующим образом:

class Rectangle {
   height = 0;
@@ -216,7 +216,7 @@ Rectangle.prototype.prototypeWidth = 25;
 
 

Приватные поля

-

Предыдущий пример может быть изменен следующим образом, используя приватные поля:

+

Предыдущий пример может быть изменён следующим образом, используя приватные поля:

class Rectangle {
   #height = 0;
@@ -233,7 +233,7 @@ Rectangle.prototype.prototypeWidth = 25;
 

Приватные поля могут быть объявлены только заранее в объявлении поля.

-

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

+

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

Более подробно об этом написано в Приватные поля класса.

@@ -247,13 +247,13 @@ Rectangle.prototype.prototypeWidth = 25; }
speak() { - console.log(`${this.name} издает звук.`); + console.log(`${this.name} издаёт звук.`); } } class Dog extends Animal { constructor(name) { -  super(name); // вызывает конструктор super класса и передает параметр name +  super(name); // вызывает конструктор super класса и передаёт параметр name }   speak() { @@ -272,7 +272,7 @@ d.speak(); // Митци лает
this.name = name; } Animal.prototype.speak = function () { - console.log(`${this.name} издает звук.`); + console.log(`${this.name} издаёт звук.`); } class Dog extends Animal { @@ -290,7 +290,7 @@ d.speak(); // Митци лает
var Animal = {
   speak() {
-    console.log(`${this.name} издает звук.`);
+    console.log(`${this.name} издаёт звук.`);
   }
 };
 
@@ -304,7 +304,7 @@ class Dog {
 Object.setPrototypeOf(Dog.prototype, Animal);
 
 let d = new Dog('Митци');
-d.speak(); // Митци издает звук.
+d.speak(); // Митци издаёт звук.

Species

@@ -332,7 +332,7 @@ console.log(mapped instanceof Array); // true
} speak() { - console.log(`${this.name} издает звук.`); + console.log(`${this.name} издаёт звук.`); } } @@ -345,7 +345,7 @@ class Lion extends Cat { let l = new Lion('Фаззи'); l.speak(); -// Фаззи издает звук. +// Фаззи издаёт звук. // Фаззи рычит. @@ -396,7 +396,7 @@ class Bar extends calculatorMixin(randomizerMixin(Foo)) { }

Повторное определение класа

-

Класс не может быть переопределен. Попытка этого приведет к SyntaxError .

+

Класс не может быть переопределён. Попытка этого приведёт к SyntaxError .

Если мы запускаете код в веб браузере, к примеру в Firefox Web Console (Tools > Web Developer > Web Console) и вы используете ('Run') определение класса с одним и тем же именем дважды, вы получите SyntaxError: redeclaration of let ClassName;. (Обсуждение по ошибке можно посмотреть в {{Bug(1428672)}}.) Chrome Developer Tools возвращает сообщение типа Uncaught SyntaxError: Identifier 'ClassName' has already been declared at <anonymous>:1:1.

diff --git a/files/ru/web/javascript/reference/classes/private_class_fields/index.html b/files/ru/web/javascript/reference/classes/private_class_fields/index.html index 78a5d91787..e81a71e738 100644 --- a/files/ru/web/javascript/reference/classes/private_class_fields/index.html +++ b/files/ru/web/javascript/reference/classes/private_class_fields/index.html @@ -31,7 +31,7 @@ class ClassWithPrivateStaticField {

Приватные поля доступны в конструкторе класса изнутри самой декларации класса.

-

Ограничение статических переменных, вызываемых только статическими методами, все еще сохраняется.

+

Ограничение статических переменных, вызываемых только статическими методами, все ещё сохраняется.

class ClassWithPrivateStaticField {
   static #PRIVATE_STATIC_FIELD
@@ -139,7 +139,7 @@ console.log(Derived.publicStaticMethod2()); // TypeError
 
 

Приватные методы экземпляров(instance)

-

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

+

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

class ClassWithPrivateMethod {
   #privateMethod() {
diff --git a/files/ru/web/javascript/reference/classes/public_class_fields/index.html b/files/ru/web/javascript/reference/classes/public_class_fields/index.html
index ea67222e50..b32dc3d2fc 100644
--- a/files/ru/web/javascript/reference/classes/public_class_fields/index.html
+++ b/files/ru/web/javascript/reference/classes/public_class_fields/index.html
@@ -172,7 +172,7 @@ console.log(instance.publicMethod());
 }

Внутри методов экземпляра, this ссылается на сам экземпляр.
- В классах наследниках, super дает доступ к прототипу базового класса, позволяя вызывать его методы.

+ В классах наследниках, super даёт доступ к прототипу базового класса, позволяя вызывать его методы.

class BaseClass {
   msg = 'hello world';
diff --git a/files/ru/web/javascript/reference/classes/static/index.html b/files/ru/web/javascript/reference/classes/static/index.html
index 58ea5996c1..f97c9db2f3 100644
--- a/files/ru/web/javascript/reference/classes/static/index.html
+++ b/files/ru/web/javascript/reference/classes/static/index.html
@@ -116,7 +116,7 @@ console.log(tp.triple());
 
 

Поддержка в браузерах

- +

{{Compat("javascript.classes.static")}}

diff --git a/files/ru/web/javascript/reference/errors/already_has_pragma/index.html b/files/ru/web/javascript/reference/errors/already_has_pragma/index.html index 5de1095a97..e976c9a07d 100644 --- a/files/ru/web/javascript/reference/errors/already_has_pragma/index.html +++ b/files/ru/web/javascript/reference/errors/already_has_pragma/index.html @@ -22,7 +22,7 @@ translation_of: Web/JavaScript/Reference/Errors/Already_has_pragma

Для данного источника JavaScript исходная карта была указана несколько раз.

-

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

+

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

 

diff --git a/files/ru/web/javascript/reference/errors/bad_radix/index.html b/files/ru/web/javascript/reference/errors/bad_radix/index.html index b3e84de1e7..c4cc82a20b 100644 --- a/files/ru/web/javascript/reference/errors/bad_radix/index.html +++ b/files/ru/web/javascript/reference/errors/bad_radix/index.html @@ -25,7 +25,7 @@ RangeError: toString() radix argument must be between 2 and 36 (Chrome)

Почему значение этого параметра не может быть больше, чем 36? Для оснований, превышающих 10, в качестве цифр используются алфавитные символы; следовательно, основание не может быть больше 36, поскольку в латинском алфавите (используемом английским и многими другими языками) только 26 символов.

-

Наиболее распространенные основания систем счисления:

+

Наиболее распространённые основания систем счисления:

  • 2 для двоичных чисел,
  • diff --git a/files/ru/web/javascript/reference/errors/bad_regexp_flag/index.html b/files/ru/web/javascript/reference/errors/bad_regexp_flag/index.html index 549b5ae654..c5c63a7200 100644 --- a/files/ru/web/javascript/reference/errors/bad_regexp_flag/index.html +++ b/files/ru/web/javascript/reference/errors/bad_regexp_flag/index.html @@ -17,7 +17,7 @@ SyntaxError: Invalid regular expression flags (Chrome)

    Что пошло не так?

    -

    В коде есть недопустимые флаги регулярных выражений. Литерал в регулярном выражении, который содержит шаблон заключенный между двумя слешами, флаги определяются после второго флага. Они также могут быть объявлены в конструкторе функции {{jsxref("RegExp")}} object (второй параметр). Флаги регулярного выражения могут быть использованы отдельно или вместе в любой очередности, но в ECMAScript их только пять.

    +

    В коде есть недопустимые флаги регулярных выражений. Литерал в регулярном выражении, который содержит шаблон заключённый между двумя слешами, флаги определяются после второго флага. Они также могут быть объявлены в конструкторе функции {{jsxref("RegExp")}} object (второй параметр). Флаги регулярного выражения могут быть использованы отдельно или вместе в любой очерёдности, но в ECMAScript их только пять.

    Чтоб включить флаг в регулярное выражение, используйте синтаксис:

    diff --git a/files/ru/web/javascript/reference/errors/bad_return_or_yield/index.html b/files/ru/web/javascript/reference/errors/bad_return_or_yield/index.html index dd69cb3167..17a6e16436 100644 --- a/files/ru/web/javascript/reference/errors/bad_return_or_yield/index.html +++ b/files/ru/web/javascript/reference/errors/bad_return_or_yield/index.html @@ -22,7 +22,7 @@ SyntaxError: yield not in function (Firefox)

    Что пошло не так?

    -

    Вызов оператора return или yield был осуществлен вне функции. Может, где-то пропущена фигурная скобка? Операторы return и yield не могут существовать вне функции, поскольку они завершают (или останавливают и возобновляют) её исполнение и указывают значение, возвращаемое в место, откуда она была вызвана.

    +

    Вызов оператора return или yield был осуществлён вне функции. Может, где-то пропущена фигурная скобка? Операторы return и yield не могут существовать вне функции, поскольку они завершают (или останавливают и возобновляют) её исполнение и указывают значение, возвращаемое в место, откуда она была вызвана.

    Примеры

    diff --git a/files/ru/web/javascript/reference/errors/called_on_incompatible_type/index.html b/files/ru/web/javascript/reference/errors/called_on_incompatible_type/index.html index 0d309530e6..9c1182eb7c 100644 --- a/files/ru/web/javascript/reference/errors/called_on_incompatible_type/index.html +++ b/files/ru/web/javascript/reference/errors/called_on_incompatible_type/index.html @@ -12,7 +12,7 @@ translation_of: Web/JavaScript/Reference/Errors/Called_on_incompatible_type
    TypeError: 'this' не является  Set объектом (EdgE)
     TypeError: Function.prototype.toString вызывается несовместимый объект (Firefox)
     TypeError: Function.prototype.bind вызывается несовместимая цель (Firefox)
    -TypeError: Метод Set.prototype.add called вызывается несовместимый приемник undefined (Chrome)
    +TypeError: Метод Set.prototype.add called вызывается несовместимый приёмник undefined (Chrome)
     TypeError: Bind должен вызываться для функции(Chrome)
     
    diff --git a/files/ru/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html b/files/ru/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html index e5c0553e8a..294f115dac 100644 --- a/files/ru/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html +++ b/files/ru/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html @@ -21,7 +21,7 @@ ReferenceError: 'x' is not defined (Chrome)

    Что случилось?

    -

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

    +

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

    Примеры

    diff --git a/files/ru/web/javascript/reference/errors/cant_access_property/index.html b/files/ru/web/javascript/reference/errors/cant_access_property/index.html index df4ab49b2a..01d353480c 100644 --- a/files/ru/web/javascript/reference/errors/cant_access_property/index.html +++ b/files/ru/web/javascript/reference/errors/cant_access_property/index.html @@ -1,6 +1,6 @@ --- title: >- - TypeError: can't access property "x" of "y"(Тип ошибки: не удается получить + TypeError: can't access property "x" of "y"(Тип ошибки: не удаётся получить доступ к свойству "x" из "y") slug: Web/JavaScript/Reference/Errors/Cant_access_property translation_of: Web/JavaScript/Reference/Errors/Cant_access_property @@ -9,16 +9,16 @@ translation_of: Web/JavaScript/Reference/Errors/Cant_access_property

    Message

    -
    TypeError: не удается получить свойство {x} неопределенной или нулевой ссылки (Edge)
    -TypeError: не удается получить доступ к свойству {x} of {y} (Firefox)
    -TypeError: {y} не определен, не может получить доступ к свойству {x} (Firefox)
    +
    TypeError: не удаётся получить свойство {x} неопределённой или нулевой ссылки (Edge)
    +TypeError: не удаётся получить доступ к свойству {x} of {y} (Firefox)
    +TypeError: {y} не определён, не может получить доступ к свойству {x} (Firefox)
     TypeError: {y} имеет значение null, не может получить доступ к свойству {x} (Firefox)
     
     Образцы:
    -TypeError: x не определен, не может получить доступ к свойству "prop"
    +TypeError: x не определён, не может получить доступ к свойству "prop"
     TypeError: x имеет значение null, не может получить доступ к свойству "prop"
    -TypeError: не удается получить доступ к свойству "prop" неопределенного
    -TypeError: не удается получить доступ к свойству "prop" значения null
    +TypeError: не удаётся получить доступ к свойству "prop" неопределённого
    +TypeError: не удаётся получить доступ к свойству "prop" значения null
     
     
    @@ -36,7 +36,7 @@ TypeError: не удается получить доступ к свойству
    // undefined and null cases on which the substring method won't work
     var foo = undefined;
    -foo.substring(1); // TypeError: x не определен, не может получить доступ к свойству substring
    +foo.substring(1); // TypeError: x не определён, не может получить доступ к свойству substring
     
     var foo = null;
     foo.substring(1); // TypeError: x имеет значение null, не может получить доступ к свойству substring
    @@ -44,10 +44,10 @@ foo.substring(1); // TypeError: x имеет значение null, не мож
     
     

    Исправление проблемы

    -

    Чтобы исправить указатель null на неопределенные или нулевые значения, можно использовать оператор typeof, например.

    +

    Чтобы исправить указатель null на неопределённые или нулевые значения, можно использовать оператор typeof, например.

    if (typeof foo !== 'undefined') {
    -  // Теперь мы знаем, что foo определен.
    +  // Теперь мы знаем, что foo определён.
     }

    Смотрите также

    diff --git a/files/ru/web/javascript/reference/errors/cant_delete/index.html b/files/ru/web/javascript/reference/errors/cant_delete/index.html index 88dd78272d..ecdfb8cc30 100644 --- a/files/ru/web/javascript/reference/errors/cant_delete/index.html +++ b/files/ru/web/javascript/reference/errors/cant_delete/index.html @@ -9,9 +9,9 @@ translation_of: Web/JavaScript/Reference/Errors/Cant_delete

    Сообщение

    -
    TypeError: вызов delete на 'x' не разрешен в строгом режиме (Edge)
    +
    TypeError: вызов delete на 'x' не разрешён в строгом режиме (Edge)
     TypeError: свойство "x" не настраивается и не может быть удалено. (браузер Firefox)
    -TypeError: не удается удалить свойство "x" из #<Object> (Chrome)
    +TypeError: не удаётся удалить свойство "x" из #<Object> (Chrome)
     

    Тип ошибки

    diff --git a/files/ru/web/javascript/reference/errors/cant_redefine_property/index.html b/files/ru/web/javascript/reference/errors/cant_redefine_property/index.html index f164596b55..caf464a65f 100644 --- a/files/ru/web/javascript/reference/errors/cant_redefine_property/index.html +++ b/files/ru/web/javascript/reference/errors/cant_redefine_property/index.html @@ -1,6 +1,6 @@ --- title: >- - TypeError: can't redefine non-configurable property "x"(Тип ошибки: не удается + TypeError: can't redefine non-configurable property "x"(Тип ошибки: не удаётся переопределить настраиваемое свойство "x") slug: Web/JavaScript/Reference/Errors/Cant_redefine_property translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property
    TypeError: невозможно изменить свойство, недоступное для записи {x} (Edge)
     TypeError: невозможно переопределить не настраиваемое свойство "x" (Firefox)
    -TypeError: не удается переопределить свойство: "x" (Chrome)
    +TypeError: не удаётся переопределить свойство: "x" (Chrome)
     

    Тип ошибки 

    @@ -26,13 +26,13 @@ TypeError: не удается переопределить свойство: "x

    Не настраиваемые свойства, созданные Object.defineProperty

    -

    The {{jsxref("Object.defineProperty()")}} создает не настраиваемые свойства, если они не указаны как настраиваемые.

    +

    The {{jsxref("Object.defineProperty()")}} создаёт не настраиваемые свойства, если они не указаны как настраиваемые.

    var obj = Object.create({});
     Object.defineProperty(obj, "foo", {value: "bar"});
     
     Object.defineProperty(obj, "foo", {value: "baz"});
    -// TypeError: не удается переопределить не настраиваемое свойство "foo"
    +// TypeError: не удаётся переопределить не настраиваемое свойство "foo"
     

    Вам нужно будет установить свойство "foo" в конфигурируемое, если вы собираетесь переопределить его позже в коде.

    diff --git a/files/ru/web/javascript/reference/errors/cyclic_object_value/index.html b/files/ru/web/javascript/reference/errors/cyclic_object_value/index.html index cfbf6eb56c..7eecd4634b 100644 --- a/files/ru/web/javascript/reference/errors/cyclic_object_value/index.html +++ b/files/ru/web/javascript/reference/errors/cyclic_object_value/index.html @@ -66,5 +66,5 @@ JSON.stringify(circularReference, getCircularReplacer());
    • {{jsxref("JSON.stringify")}}
    • -
    • cycle.js – вводит две функции, JSON.decycle и JSON.retrocycle, что дает возможность кодирования и декодирования циклических структур и групп обеспечения доступности баз данных в расширенный и обратно совместимый формат JSON.
    • +
    • cycle.js – вводит две функции, JSON.decycle и JSON.retrocycle, что даёт возможность кодирования и декодирования циклических структур и групп обеспечения доступности баз данных в расширенный и обратно совместимый формат JSON.
    diff --git a/files/ru/web/javascript/reference/errors/dead_object/index.html b/files/ru/web/javascript/reference/errors/dead_object/index.html index de666b01d8..7ce56344d0 100644 --- a/files/ru/web/javascript/reference/errors/dead_object/index.html +++ b/files/ru/web/javascript/reference/errors/dead_object/index.html @@ -1,7 +1,7 @@ --- title: >- - TypeError: can't access dead object (Тип ошибки:не удается получить доступ к - мертвому объекту) + TypeError: can't access dead object (Тип ошибки:не удаётся получить доступ к + мёртвому объекту) slug: Web/JavaScript/Reference/Errors/Dead_object translation_of: Web/JavaScript/Reference/Errors/Dead_object --- @@ -18,9 +18,9 @@ translation_of: Web/JavaScript/Reference/Errors/Dead_object

    Что не так?

    -

    Для улучшения использования памяти и предотвращения утечек памяти Firefox запрещает надстройкам сохранять строгие ссылки на объекты DOM после уничтожения родительского документа. Мертвый объект содержит сильную ссылку (keep alive) на элемент DOM, который сохраняется даже после того, как он был уничтожен в DOM. Чтобы избежать этих проблем, ссылки на узлы DOM во внешнем документе должны храниться в объекте, который относится к этому документу, и очищаться при выгрузке документа или храниться как слабые ссылки.

    +

    Для улучшения использования памяти и предотвращения утечек памяти Firefox запрещает надстройкам сохранять строгие ссылки на объекты DOM после уничтожения родительского документа. Мёртвый объект содержит сильную ссылку (keep alive) на элемент DOM, который сохраняется даже после того, как он был уничтожен в DOM. Чтобы избежать этих проблем, ссылки на узлы DOM во внешнем документе должны храниться в объекте, который относится к этому документу, и очищаться при выгрузке документа или храниться как слабые ссылки.

    -

    Проверка, если объект мертв

    +

    Проверка, если объект мёртв

    Components.utils предлагает isDeadWrapper()метод, который может использовать привилегированный код. 
     

    @@ -41,8 +41,8 @@ catch (e) {

    Смотрите также

    diff --git a/files/ru/web/javascript/reference/errors/delete_in_strict_mode/index.html b/files/ru/web/javascript/reference/errors/delete_in_strict_mode/index.html index ed6a768e94..06f348e5b2 100644 --- a/files/ru/web/javascript/reference/errors/delete_in_strict_mode/index.html +++ b/files/ru/web/javascript/reference/errors/delete_in_strict_mode/index.html @@ -10,7 +10,7 @@ translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode

    Сообщение

    -
    SyntaxError: вызов delete on expression запрещен в строгом режиме в (Edge)
    +
    SyntaxError: вызов delete on expression запрещён в строгом режиме в (Edge)
     SyntaxError: применение оператора 'delete' к неполному имени не рекомендуется в (Firefox)
     SyntaxError: удаление неполного идентификатора в строгом режиме запрещено в (Chrome)
     
    @@ -33,7 +33,7 @@ SyntaxError: удаление неполного идентификатора в

    Примеры

    -

    Попытка удалить простую переменную не работает в JavaScript и выдает ошибку в строгом режиме:

    +

    Попытка удалить простую переменную не работает в JavaScript и выдаёт ошибку в строгом режиме:

    'use strict';
     
    @@ -46,7 +46,7 @@ delete x;
     // SyntaxError: применение оператора 'delete' к неполному имени является устаревшим
     
    -

    Чтобы освободить содержимое переменной, задайте для нее значение {{jsxref("null")}}:

    +

    Чтобы освободить содержимое переменной, задайте для неё значение {{jsxref("null")}}:

    'use strict';
     
    diff --git a/files/ru/web/javascript/reference/errors/deprecated_expression_closures/index.html b/files/ru/web/javascript/reference/errors/deprecated_expression_closures/index.html
    index 7e89e085df..1e5ea400a1 100644
    --- a/files/ru/web/javascript/reference/errors/deprecated_expression_closures/index.html
    +++ b/files/ru/web/javascript/reference/errors/deprecated_expression_closures/index.html
    @@ -19,7 +19,7 @@ translation_of: Web/JavaScript/Reference/Errors/Deprecated_expression_closures
     
     

    Что пошло не так?

    -

    Нестандартный синтаксис закрытия выражений (сокращенный синтаксис функций) устарел и больше не должен использоваться. Этот синтаксис будет полностью удален в Этот синтаксис будет полностью удален в {{bug(1083458)}} а скрипты с его помощью {{jsxref("SyntaxError")}} затем.

    +

    Нестандартный синтаксис закрытия выражений (сокращённый синтаксис функций) устарел и больше не должен использоваться. Этот синтаксис будет полностью удалён в Этот синтаксис будет полностью удалён в {{bug(1083458)}} а скрипты с его помощью {{jsxref("SyntaxError")}} затем.

    Примеры

    @@ -49,7 +49,7 @@ var obj = {
    var x = () => 1;
    -

    Стандартный синтаксис с использованием сокращенного синтаксиса метода

    +

    Стандартный синтаксис с использованием сокращённого синтаксиса метода

    Замыкания выражений также можно найти с помощью getter'а и setter'а, например:

    diff --git a/files/ru/web/javascript/reference/errors/deprecated_string_generics/index.html b/files/ru/web/javascript/reference/errors/deprecated_string_generics/index.html index 9bfa3ffb6c..84c437a28d 100644 --- a/files/ru/web/javascript/reference/errors/deprecated_string_generics/index.html +++ b/files/ru/web/javascript/reference/errors/deprecated_string_generics/index.html @@ -8,7 +8,7 @@ translation_of: Web/JavaScript/Reference/Errors/Deprecated_String_generics ---
    {{jsSidebar("Errors")}}
    -
    Поддержка строковых обобщенных методов прекращена с версии Firefox 68. Более старые версии предупреждают об использовании данных методов следующим образом:
    +
    Поддержка строковых обобщённых методов прекращена с версии Firefox 68. Более старые версии предупреждают об использовании данных методов следующим образом:

    Сообщение

    @@ -45,7 +45,7 @@ Warning: String.trimRight is deprecated; use String.prototype.trimRight

    Что пошло не так?

    -

    Нестандартные обобщенные методы {{jsxref("String")}} являются устаревшими, поддержка в Firefox прекращена, начиная с версии 68. Строковые обобщенные методы предоставляют возможность применять методы экземпляров String к любым объектам.

    +

    Нестандартные обобщённые методы {{jsxref("String")}} являются устаревшими, поддержка в Firefox прекращена, начиная с версии 68. Строковые обобщённые методы предоставляют возможность применять методы экземпляров String к любым объектам.

    Примеры

    @@ -62,7 +62,7 @@ String(num).replace(/5/, '2');

    Прослойка

    -

    Ниже приведен код прослойки, с помощью которой можно добавить поддержку обобщенных методов String в другие браузеры:

    +

    Ниже приведён код прослойки, с помощью которой можно добавить поддержку обобщённых методов String в другие браузеры:

    /*globals define*/
     // Предполагаем, что все требуемые методы экземпляров String уже присутствуют
    diff --git a/files/ru/web/javascript/reference/errors/deprecated_tolocaleformat/index.html b/files/ru/web/javascript/reference/errors/deprecated_tolocaleformat/index.html
    index c90ca639e7..e843b0c45f 100644
    --- a/files/ru/web/javascript/reference/errors/deprecated_tolocaleformat/index.html
    +++ b/files/ru/web/javascript/reference/errors/deprecated_tolocaleformat/index.html
    @@ -23,7 +23,7 @@ translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat
     
     

    Неправильный синтаксис

    -

    В {{jsxref("Date.prototype.toLocaleFormat")}} метод устарел и будет удален (поддержка кроссбраузерных браузеров, доступна только в Firefox).

    +

    В {{jsxref("Date.prototype.toLocaleFormat")}} метод устарел и будет удалён (поддержка кроссбраузерных браузеров, доступна только в Firefox).

    var today = new Date();
     var date = today.toLocaleFormat('%A, %e. %B %Y');
    @@ -34,7 +34,7 @@ console.log(date);
     
     

    Альтернативный стандартный синтаксис с использованием ECMAScript IntlAPI

    -

    Стандарт ECMA-402 (ECMAScript Intl API) определяет стандартные объекты и методы, которые позволяют форматировать дату и время с учетом языка (доступно в Chrome 24+, Firefox 29+, IE11+, Safari10+).

    +

    Стандарт ECMA-402 (ECMAScript Intl API) определяет стандартные объекты и методы, которые позволяют форматировать дату и время с учётом языка (доступно в Chrome 24+, Firefox 29+, IE11+, Safari10+).

    You can now either use the {{jsxref("Date.prototype.toLocaleDateString")}} method if you just want to format one date.

    diff --git a/files/ru/web/javascript/reference/errors/equal_as_assign/index.html b/files/ru/web/javascript/reference/errors/equal_as_assign/index.html index 4219e825ba..1bea6c1135 100644 --- a/files/ru/web/javascript/reference/errors/equal_as_assign/index.html +++ b/files/ru/web/javascript/reference/errors/equal_as_assign/index.html @@ -18,7 +18,7 @@ translation_of: Web/JavaScript/Reference/Errors/Equal_as_assign

    Что пошло не так?

    -

    Было присвоение ( = ), когда вы обычно ожидали тест на присвоение (==). Чтобы помочь отладке, JavaScript (с включенными строгими предупреждениями) предупреждает об этом шаблоне.

    +

    Было присвоение ( = ), когда вы обычно ожидали тест на присвоение (==). Чтобы помочь отладке, JavaScript (с включёнными строгими предупреждениями) предупреждает об этом шаблоне.

    Примеры

    diff --git a/files/ru/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html b/files/ru/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html index d9a8f5ae2c..d44d147e44 100644 --- a/files/ru/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html +++ b/files/ru/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html @@ -14,7 +14,7 @@ translation_of: Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated

    Что пошло не так?

    -

    JavaScript 1.6's {{jsxref("Statements/for_each...in", "for each (variable in obj)")}} оператор устарел и будет удален в ближайшем будущем.

    +

    JavaScript 1.6's {{jsxref("Statements/for_each...in", "for each (variable in obj)")}} оператор устарел и будет удалён в ближайшем будущем.

    Примеры

    @@ -121,7 +121,7 @@ func(undefined); // prints nothing

    Неправильный синтаксис

    -

    Существует устаревшая идиома для итерации по парам ключ-значение указанного объекта с помощью {{jsxref("Statements/for_each...in", "for each...in")}} и осужденный {{jsxref("Iterator")}} объект.

    +

    Существует устаревшая идиома для итерации по парам ключ-значение указанного объекта с помощью {{jsxref("Statements/for_each...in", "for each...in")}} и осуждённый {{jsxref("Iterator")}} объект.

    var object = { a: 10, b: 20 };
     
    diff --git a/files/ru/web/javascript/reference/errors/getter_only/index.html b/files/ru/web/javascript/reference/errors/getter_only/index.html
    index 9dc64f048f..c7fd7169f9 100644
    --- a/files/ru/web/javascript/reference/errors/getter_only/index.html
    +++ b/files/ru/web/javascript/reference/errors/getter_only/index.html
    @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Errors/Getter_only
     
     
    TypeError: назначение свойств только для чтения не допускается в строгом режиме (Edge)
     TypeError: установка свойства только для геттера "x" (Firefox)
    -TypeError: не удается установить свойство "prop" из #<Object>, который имеет только геттер (Chrome)
    +TypeError: не удаётся установить свойство "prop" из #<Object>, который имеет только геттер (Chrome)
     
     
    @@ -25,7 +25,7 @@ TypeError: не удается установить свойство "prop" из

    Примеры

    -

    В приведенном ниже примере показано, как установить getter для свойства. Он не задает сеттер, так TypeError выдается при попытке установить свойство температуры до 30. Дополнительные сведения см. Также в {{jsxref("Object.defineProperty()")}} странице.

    +

    В приведённом ниже примере показано, как установить getter для свойства. Он не задаёт сеттер, так TypeError выдаётся при попытке установить свойство температуры до 30. Дополнительные сведения см. Также в {{jsxref("Object.defineProperty()")}} странице.

    "use strict";
     
    @@ -45,7 +45,7 @@ arc.temperature; // 'get!'
     arc.temperature = 30;
     // TypeError: setting getter-only property "temperature"
    -

    Чтобы устранить эту ошибку, необходимо либо удалить строку 16, в которой предпринята попытка задать свойство temperature, либо реализовать для нее сеттер, например, как показано ниже:

    +

    Чтобы устранить эту ошибку, необходимо либо удалить строку 16, в которой предпринята попытка задать свойство temperature, либо реализовать для неё сеттер, например, как показано ниже:

    "use strict";
     
    diff --git a/files/ru/web/javascript/reference/errors/identifier_after_number/index.html b/files/ru/web/javascript/reference/errors/identifier_after_number/index.html
    index 71cdda791f..af7eae5389 100644
    --- a/files/ru/web/javascript/reference/errors/identifier_after_number/index.html
    +++ b/files/ru/web/javascript/reference/errors/identifier_after_number/index.html
    @@ -22,9 +22,9 @@ SyntaxError: непредвиденное число (Chrome)
     
     

     

    -

    Имена переменных, называемых {{Glossary("Identifier", "identifiers")}} соответствуют определенным правилам, которых должен придерживаться ваш код!

    +

    Имена переменных, называемых {{Glossary("Identifier", "identifiers")}} соответствуют определённым правилам, которых должен придерживаться ваш код!

    -

    Идентификатор JavaScript должен начинаться с буквы, символа подчеркивания ( _ ) или знака доллара ($). Они не могут начать с цифры! Только последующие символы могут быть цифрами (0-9).

    +

    Идентификатор JavaScript должен начинаться с буквы, символа подчёркивания ( _ ) или знака доллара ($). Они не могут начать с цифры! Только последующие символы могут быть цифрами (0-9).

     

    diff --git a/files/ru/web/javascript/reference/errors/in_operator_no_object/index.html b/files/ru/web/javascript/reference/errors/in_operator_no_object/index.html index a61a8d5f41..9563af464e 100644 --- a/files/ru/web/javascript/reference/errors/in_operator_no_object/index.html +++ b/files/ru/web/javascript/reference/errors/in_operator_no_object/index.html @@ -1,6 +1,6 @@ --- title: >- - TypeError: cannot use 'in' operator to search for 'x' in 'y'(не удается + TypeError: cannot use 'in' operator to search for 'x' in 'y'(не удаётся использовать 'in' оператор поиска для 'x' в 'y') slug: Web/JavaScript/Reference/Errors/in_operator_no_object translation_of: Web/JavaScript/Reference/Errors/in_operator_no_object @@ -43,7 +43,7 @@ TypeError: невозможно использовать оператор 'in'
    var foo = null;
     "bar" in foo;
    -// TypeError: не удается использовать оператор 'in' для поиска 'bar' в 'foo' (Chrome)
    +// TypeError: не удаётся использовать оператор 'in' для поиска 'bar' в 'foo' (Chrome)
     // TypeError: правая часть 'in' должна быть объектом, полученным null (Firefox)
     
    diff --git a/files/ru/web/javascript/reference/errors/index.html b/files/ru/web/javascript/reference/errors/index.html index 21d076dbdc..41b34e5478 100644 --- a/files/ru/web/javascript/reference/errors/index.html +++ b/files/ru/web/javascript/reference/errors/index.html @@ -8,9 +8,9 @@ translation_of: Web/JavaScript/Reference/Errors ---

    {{jsSidebar("Errors")}}

    -

    Ниже, Вы найдете список ошибок, которые возвращает JavaScript. Эти ошибки могут быть полезны при отладке, но неполадки не всегда сразу понятны. Страницы ниже  предлагают дополнительную информацию об этих ошибках. Каждая ошибка это Объект на основании {{jsxref("Error")}} object, и имеет имя (name) и сообщение (message).

    +

    Ниже, Вы найдёте список ошибок, которые возвращает JavaScript. Эти ошибки могут быть полезны при отладке, но неполадки не всегда сразу понятны. Страницы ниже  предлагают дополнительную информацию об этих ошибках. Каждая ошибка это Объект на основании {{jsxref("Error")}} object, и имеет имя (name) и сообщение (message).

    -

    Ошибки отображенные в Web консоли могут содержать ссылку на соответствующую страницу ниже, чтобы помочь вам быстро понять проблему в коде.

    +

    Ошибки отображённые в Web консоли могут содержать ссылку на соответствующую страницу ниже, чтобы помочь вам быстро понять проблему в коде.

    Список ошибок

    diff --git a/files/ru/web/javascript/reference/errors/invalid_const_assignment/index.html b/files/ru/web/javascript/reference/errors/invalid_const_assignment/index.html index d658f57b73..710aa435f8 100644 --- a/files/ru/web/javascript/reference/errors/invalid_const_assignment/index.html +++ b/files/ru/web/javascript/reference/errors/invalid_const_assignment/index.html @@ -19,7 +19,7 @@ TypeError: повторное объявление const 'x' (IE)

    Что пошло не так?

    -

    Константа-это значение, которое не может быть изменено программой в обычном исполнении. Он не может быть изменен путем повторного назначения и не может быть повторно объявлен. В JavaScript, константы объявляются с помощью ключевого слова const.

    +

    Константа-это значение, которое не может быть изменено программой в обычном исполнении. Он не может быть изменён путём повторного назначения и не может быть повторно объявлен. В JavaScript, константы объявляются с помощью ключевого слова const.

    Примеры

    @@ -67,7 +67,7 @@ function setupBigScreenEnvironment() {

    const и неизменность

    -

    Объявление const создает ссылку только для чтения на значение. Это не означает, что значение, которое он содержит, является неизменяемым, просто идентификатор переменной не может быть переназначен. Например, если содержимое является объектом, это означает, что сам объект все еще может быть изменен. Это означает, что нельзя изменить значение, хранящееся в переменной:

    +

    Объявление const создаёт ссылку только для чтения на значение. Это не означает, что значение, которое он содержит, является неизменяемым, просто идентификатор переменной не может быть переназначен. Например, если содержимое является объектом, это означает, что сам объект все ещё может быть изменён. Это означает, что нельзя изменить значение, хранящееся в переменной:

    const obj = {foo: 'bar'};
     obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj'
    diff --git a/files/ru/web/javascript/reference/errors/invalid_for-in_initializer/index.html b/files/ru/web/javascript/reference/errors/invalid_for-in_initializer/index.html
    index f9e91b0a53..9f0b68e84c 100644
    --- a/files/ru/web/javascript/reference/errors/invalid_for-in_initializer/index.html
    +++ b/files/ru/web/javascript/reference/errors/invalid_for-in_initializer/index.html
    @@ -22,11 +22,11 @@ SyntaxError: объявление переменной цикла for-in мож
     
     

    Что пошло не так?

    -

    Глава цикла for...in содержит выражение инициализатора. То есть переменная объявляется и присваивается значение |for (var i = 0 in obj)|. В нестрогом режиме это объявление head игнорируется и ведет себя как |for (var i in obj)|. Однако в строгом режиме создается синтаксическая ошибка.

    +

    Глава цикла for...in содержит выражение инициализатора. То есть переменная объявляется и присваивается значение |for (var i = 0 in obj)|. В нестрогом режиме это объявление head игнорируется и ведёт себя как |for (var i in obj)|. Однако в строгом режиме создаётся синтаксическая ошибка.

    Примеры

    -

    Данный пример дает SyntaxError:

    +

    Данный пример даёт SyntaxError:

    "use strict";
     
    diff --git a/files/ru/web/javascript/reference/errors/is_not_iterable/index.html b/files/ru/web/javascript/reference/errors/is_not_iterable/index.html
    index c084aac4e3..5e2823d3c1 100644
    --- a/files/ru/web/javascript/reference/errors/is_not_iterable/index.html
    +++ b/files/ru/web/javascript/reference/errors/is_not_iterable/index.html
    @@ -8,7 +8,7 @@ translation_of: Web/JavaScript/Reference/Errors/is_not_iterable
     

    Сообщение

    TypeError: "x" не является итерационным (Firefox, Chrome)
    -TypeError: 'x' не является функцией или ее возвращаемое значение не является итерационным (Chrome)
    +TypeError: 'x' не является функцией или её возвращаемое значение не является итерационным (Chrome)
     

    Тип ошибки

    @@ -17,7 +17,7 @@ TypeError: 'x' не является функцией или ее возвращ

    Что пошло не так?

    -

    Значение, которое дается как правая сторона for...of или как аргумент функции, такой как {{jsxref("Promise.all")}} или {{jsxref("TypedArray.from")}}, не является итерационным объектом.  Повторяемое может быть, встроенный итератор типа, такие как {{jsxref("Array")}}, {{jsxref("String")}} или {{jsxref("Map")}}, генератор результатом, или объект, реализующий итератор протокол.

    +

    Значение, которое даётся как правая сторона for...of или как аргумент функции, такой как {{jsxref("Promise.all")}} или {{jsxref("TypedArray.from")}}, не является итерационным объектом.  Повторяемое может быть, встроенный итератор типа, такие как {{jsxref("Array")}}, {{jsxref("String")}} или {{jsxref("Map")}}, генератор результатом, или объект, реализующий итератор протокол.

    Примеры

    @@ -77,7 +77,7 @@ for (let x of generate) // TypeError: генерация не является console.log(x);
    -

    Если они не вызываются, то объект {{jsxref("Function")}}, соответствующий генератору, можно вызвать, но нельзя выполнить итерацию. Вызов генератора создает итерационный объект, который будет выполнять итерацию по значениям, полученным во время выполнения генератора.

    +

    Если они не вызываются, то объект {{jsxref("Function")}}, соответствующий генератору, можно вызвать, но нельзя выполнить итерацию. Вызов генератора создаёт итерационный объект, который будет выполнять итерацию по значениям, полученным во время выполнения генератора.

    function* generate(a, b) {
         yield a;
    diff --git a/files/ru/web/javascript/reference/errors/malformed_formal_parameter/index.html b/files/ru/web/javascript/reference/errors/malformed_formal_parameter/index.html
    index 5e65f8c633..f848e5486d 100644
    --- a/files/ru/web/javascript/reference/errors/malformed_formal_parameter/index.html
    +++ b/files/ru/web/javascript/reference/errors/malformed_formal_parameter/index.html
    @@ -39,7 +39,7 @@ var f = Function('x,', 'return x;');
     // SyntaxError (лишняя запятая)
     
     var f = Function(37, "alert('OK')");
    -// SyntaxError (числа не могут использоваться в качестве имен аргументов)
    +// SyntaxError (числа не могут использоваться в качестве имён аргументов)
     

    Правильный код

    diff --git a/files/ru/web/javascript/reference/errors/missing_bracket_after_list/index.html b/files/ru/web/javascript/reference/errors/missing_bracket_after_list/index.html index 32035a2365..12acf53f79 100644 --- a/files/ru/web/javascript/reference/errors/missing_bracket_after_list/index.html +++ b/files/ru/web/javascript/reference/errors/missing_bracket_after_list/index.html @@ -24,7 +24,7 @@ translation_of: Web/JavaScript/Reference/Errors/Missing_bracket_after_list

    Примеры

    -

    Незавершенный инициализатор массива

    +

    Незавершённый инициализатор массива

    var list = [1, 2,
     
    diff --git a/files/ru/web/javascript/reference/errors/missing_colon_after_property_id/index.html b/files/ru/web/javascript/reference/errors/missing_colon_after_property_id/index.html
    index 856d2fe526..00012ea3c4 100644
    --- a/files/ru/web/javascript/reference/errors/missing_colon_after_property_id/index.html
    +++ b/files/ru/web/javascript/reference/errors/missing_colon_after_property_id/index.html
    @@ -55,7 +55,7 @@ obj['propertyKey'] = 'value';
     
     

    Вычисляемые свойства

    -

    Если вы создаете ключ свойства из выражения, то вам необходимо использовать квадратные скобки. В противном случае имя свойства не будет вычислено:

    +

    Если вы создаёте ключ свойства из выражения, то вам необходимо использовать квадратные скобки. В противном случае имя свойства не будет вычислено:

    var obj = { 'b'+'ar': 'foo' };
     // SyntaxError: missing : after property id
    diff --git a/files/ru/web/javascript/reference/errors/missing_curly_after_function_body/index.html b/files/ru/web/javascript/reference/errors/missing_curly_after_function_body/index.html
    index 0d971440c7..0f3c17df1f 100644
    --- a/files/ru/web/javascript/reference/errors/missing_curly_after_function_body/index.html
    +++ b/files/ru/web/javascript/reference/errors/missing_curly_after_function_body/index.html
    @@ -46,12 +46,12 @@ translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_function_bod
       }
     };
    -

    Еще больше путаницы может внести использование {{Glossary("IIFE")}}, замыканий и прочих конструкций, где используется большое количество различных скобок:

    +

    Ещё больше путаницы может внести использование {{Glossary("IIFE")}}, замыканий и прочих конструкций, где используется большое количество различных скобок:

    (function() { if (true) { return false; } );
     
    -

    Зачастую облегчить поиск ошибок можно, проверив отступы еще раз или расставив их по-другому.

    +

    Зачастую облегчить поиск ошибок можно, проверив отступы ещё раз или расставив их по-другому.

    (function() {
       if (true) {
    diff --git a/files/ru/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html b/files/ru/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html
    index 1b84367f61..fd7d0ca039 100644
    --- a/files/ru/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html
    +++ b/files/ru/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html
    @@ -20,7 +20,7 @@ translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argume
     
     

    Примеры

    -

    Из-за отсутствия оператора конкатенации "+", JavaScript ожидает аргумент функции log просто "PI: ". В этом случае, он должен быть заключен в закрывающие скобки.

    +

    Из-за отсутствия оператора конкатенации "+", JavaScript ожидает аргумент функции log просто "PI: ". В этом случае, он должен быть заключён в закрывающие скобки.

    console.log('PI: ' Math.PI);
     // SyntaxError: missing ) after argument list
    diff --git a/files/ru/web/javascript/reference/errors/no_variable_name/index.html b/files/ru/web/javascript/reference/errors/no_variable_name/index.html
    index 9ac5f9cb6e..0791d91708 100644
    --- a/files/ru/web/javascript/reference/errors/no_variable_name/index.html
    +++ b/files/ru/web/javascript/reference/errors/no_variable_name/index.html
    @@ -35,7 +35,7 @@ SyntaxError: Unexpected token = (Chrome)

    Зарезервированные ключевые слова не могут использоваться как имена переменных

    -

    Есть несколько имен, которые являются зарезервированными ключевыми словами. Их нельзя использовать. Увы :(

    +

    Есть несколько имён, которые являются зарезервированными ключевыми словами. Их нельзя использовать. Увы :(

    var debugger = "whoop";
     // SyntaxError: missing variable name
    diff --git a/files/ru/web/javascript/reference/errors/non_configurable_array_element/index.html b/files/ru/web/javascript/reference/errors/non_configurable_array_element/index.html
    index b298844d17..9f932a969a 100644
    --- a/files/ru/web/javascript/reference/errors/non_configurable_array_element/index.html
    +++ b/files/ru/web/javascript/reference/errors/non_configurable_array_element/index.html
    @@ -1,6 +1,6 @@
     ---
     title: >-
    -  TypeError: can't delete non-configurable array element(Тип ошибки:не удается
    +  TypeError: can't delete non-configurable array element(Тип ошибки:не удаётся
       удалить настраиваемый элемент массива)
     slug: Web/JavaScript/Reference/Errors/Non_configurable_array_element
     translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element
    @@ -9,8 +9,8 @@ translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element
     
     

    Сообщения

    -
    TypeError: не удается удалить не настраиваемый элемент массива (Firefox)
    -TypeError: не удается удалить свойство '2' из [массива объектов] (Chrome)
    +
    TypeError: не удаётся удалить не настраиваемый элемент массива (Firefox)
    +TypeError: не удаётся удалить свойство '2' из [массива объектов] (Chrome)
     

    Тип ошибки

    @@ -33,14 +33,14 @@ TypeError: не удается удалить свойство '2' из [мас

    Не настраиваемые свойства, созданные Object.defineProperty

    -

    The {{jsxref("Object.defineProperty()")}} создает не настраиваемые свойства по умолчанию, если они не указаны как настраиваемые.

    +

    The {{jsxref("Object.defineProperty()")}} создаёт не настраиваемые свойства по умолчанию, если они не указаны как настраиваемые.

    var arr = [];
     Object.defineProperty(arr, 0, {value: 0});
     Object.defineProperty(arr, 1, {value: "1"});
     
     arr.length = 1;
    -// TypeError: не удается удалить не настраиваемый элемент массива
    +// TypeError: не удаётся удалить не настраиваемый элемент массива
     

    Вам нужно будет установить элементы как конфигурируемые, если вы собираетесь сократить массив.

    diff --git a/files/ru/web/javascript/reference/errors/not_a_codepoint/index.html b/files/ru/web/javascript/reference/errors/not_a_codepoint/index.html index 0b72d6c50f..1d1decf231 100644 --- a/files/ru/web/javascript/reference/errors/not_a_codepoint/index.html +++ b/files/ru/web/javascript/reference/errors/not_a_codepoint/index.html @@ -18,7 +18,7 @@ RangeError: Invalid code point {0} (Chrome)

    Что пошло не так?

    -

    Метод {{jsxref("String.fromCodePoint()")}} выдает ошибку, если ему было передано значение {{jsxref("NaN")}}, отрицательное целое число (-1), нецелое число (5.4) или значение, которое превышает 0x10FFFF (1114111).

    +

    Метод {{jsxref("String.fromCodePoint()")}} выдаёт ошибку, если ему было передано значение {{jsxref("NaN")}}, отрицательное целое число (-1), нецелое число (5.4) или значение, которое превышает 0x10FFFF (1114111).

    Кодовая точка (code point) – это значение в кодовом пространстве Unicode, то есть диапазон целых чисел от 0 до 0x10FFFF.

    diff --git a/files/ru/web/javascript/reference/errors/not_a_constructor/index.html b/files/ru/web/javascript/reference/errors/not_a_constructor/index.html index e9c3aafb29..68f9144938 100644 --- a/files/ru/web/javascript/reference/errors/not_a_constructor/index.html +++ b/files/ru/web/javascript/reference/errors/not_a_constructor/index.html @@ -71,7 +71,7 @@ var obj = new f;

    В Обещаниях (Promises)

    -

    В случае, когда возвращается незамедлительно разрешенное или незамедлительно отклоненное Обещание, Вам не нужно создавать новое Обещание new Promise(...) и работать с ним.

    +

    В случае, когда возвращается незамедлительно разрешённое или незамедлительно отклонённое Обещание, Вам не нужно создавать новое Обещание new Promise(...) и работать с ним.

    Это неправильно (конструктор Обещания вызывается неправильно) и будет вызывать исключение TypeError: this is not a constructor:

    diff --git a/files/ru/web/javascript/reference/errors/not_defined/index.html b/files/ru/web/javascript/reference/errors/not_defined/index.html index 818c3c00d4..2169f9ffa3 100644 --- a/files/ru/web/javascript/reference/errors/not_defined/index.html +++ b/files/ru/web/javascript/reference/errors/not_defined/index.html @@ -36,7 +36,7 @@ foo.substring(1); // "ar"

    Неправильная зона доступности

    -

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

    +

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

    function numbers () {
       var num1 = 2,
    @@ -46,7 +46,7 @@ foo.substring(1); // "ar"
    console.log(num1); // ReferenceError num1 is not defined.
    -

    Тем не менее, функция может получить доступ ко всем переменным и функциям, определенным в области видимости, в которой она определена.  Другими словами, функция, определенная в глобальной области может получить доступ ко всем переменным, определенным в глобальном масштабе.

    +

    Тем не менее, функция может получить доступ ко всем переменным и функциям, определённым в области видимости, в которой она определена.  Другими словами, функция, определённая в глобальной области может получить доступ ко всем переменным, определённым в глобальном масштабе.

    var num1 = 2,
         num2 = 3;
    diff --git a/files/ru/web/javascript/reference/errors/read-only/index.html b/files/ru/web/javascript/reference/errors/read-only/index.html
    index 4675e8008f..2616d68809 100644
    --- a/files/ru/web/javascript/reference/errors/read-only/index.html
    +++ b/files/ru/web/javascript/reference/errors/read-only/index.html
    @@ -10,8 +10,8 @@ translation_of: Web/JavaScript/Reference/Errors/Read-only
     
    TypeError: назначение свойств только для чтения не допускается в строгом режиме (Edge)
     TypeError: "x" доступен только для чтения (Firefox)
     TypeError: 0 доступен только для чтения (Firefox)
    -TypeError: не удается назначить только для чтения свойство "x" из #<объект> (Chrome)
    -TypeError: не удается назначить только для чтения свойство '0' [массив объектов] (Chrome)
    +TypeError: не удаётся назначить только для чтения свойство "x" из #<объект> (Chrome)
    +TypeError: не удаётся назначить только для чтения свойство '0' [массив объектов] (Chrome)
     

    Тип ошибки

    diff --git a/files/ru/web/javascript/reference/errors/redeclared_parameter/index.html b/files/ru/web/javascript/reference/errors/redeclared_parameter/index.html index 781ea495ec..dbf5ae9fba 100644 --- a/files/ru/web/javascript/reference/errors/redeclared_parameter/index.html +++ b/files/ru/web/javascript/reference/errors/redeclared_parameter/index.html @@ -21,7 +21,7 @@ SyntaxError: Identifier "x" has already been declared (Chrome)

    Что пошло не так?

    -

    Одно и то же имя переменной сначала использовано в качестве параметра, а потом объявлено еще раз в теле функции с помощью оператора присваивания let. В JavaScript не допустимо переопределение переменной в рамках области видимости функции или блока при помощи let.

    +

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

    Примеры

    @@ -34,7 +34,7 @@ SyntaxError: Identifier "x" has already been declared (Chrome) // SyntaxError: redeclaration of formal parameter "arg"
    -

    Если вы хотите изменить значение переменной "arg" в теле функции, это можно сделать, но для этого не требуется объявлять эту же переменную еще раз. Иначе говоря, ключевое слово let можно опустить. Если же вы хотите создать новую переменную, необходимо ее переименовать, поскольку в противном случае она вступает в конфликт с уже существующим параметром функции.

    +

    Если вы хотите изменить значение переменной "arg" в теле функции, это можно сделать, но для этого не требуется объявлять эту же переменную ещё раз. Иначе говоря, ключевое слово let можно опустить. Если же вы хотите создать новую переменную, необходимо её переименовать, поскольку в противном случае она вступает в конфликт с уже существующим параметром функции.

    function f(arg) {
       arg = 'foo';
    diff --git a/files/ru/web/javascript/reference/errors/reserved_identifier/index.html b/files/ru/web/javascript/reference/errors/reserved_identifier/index.html
    index 28c0df1add..91cedeb38d 100644
    --- a/files/ru/web/javascript/reference/errors/reserved_identifier/index.html
    +++ b/files/ru/web/javascript/reference/errors/reserved_identifier/index.html
    @@ -60,7 +60,7 @@ var list = ["potatoes", "rice", "fries"];

    Обновление старых браузеров

    -

    Например, если вы используете старый браузер, в котором еще не реализована функция let или class, вам следует перейти на более новую версию браузера, которая поддерживает данные языковые функции.

    +

    Например, если вы используете старый браузер, в котором ещё не реализована функция let или class, вам следует перейти на более новую версию браузера, которая поддерживает данные языковые функции.

    "use strict";
     class DocArchiver {}
    diff --git a/files/ru/web/javascript/reference/errors/strict_non_simple_params/index.html b/files/ru/web/javascript/reference/errors/strict_non_simple_params/index.html
    index 48917edbc1..9f76e774c7 100644
    --- a/files/ru/web/javascript/reference/errors/strict_non_simple_params/index.html
    +++ b/files/ru/web/javascript/reference/errors/strict_non_simple_params/index.html
    @@ -23,7 +23,7 @@ SyntaxError: Illegal 'use strict' directive in function with non-simple paramete
     

    Перевод:

    Edge:
    -Не удается применить строгий режим к функциям со списком, содержащим сложные параметры
    +Не удаётся применить строгий режим к функциям со списком, содержащим сложные параметры
     
     Firefox:
     Ошибка синтаксиса: "use strict" не допускается в функции с параметром по умолчанию
    @@ -74,7 +74,7 @@ function sum(a = 1, b = 2) {
     
     

    Функция выражения

    -

    Выражение функции может использовать еще один обходной путь:

    +

    Выражение функции может использовать ещё один обходной путь:

    var sum = function sum([a, b]) {
       // SyntaxError: "use strict" не допускается в функции с параметром деструктурирования
    diff --git a/files/ru/web/javascript/reference/errors/unexpected_token/index.html b/files/ru/web/javascript/reference/errors/unexpected_token/index.html
    index 52b6bca2de..62f6dd9db2 100644
    --- a/files/ru/web/javascript/reference/errors/unexpected_token/index.html
    +++ b/files/ru/web/javascript/reference/errors/unexpected_token/index.html
    @@ -25,7 +25,7 @@ SyntaxError: expected '=>' after argument list, got "x"
     
     

    Что пошло не так?

    -

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

    +

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

    Примеры

    @@ -39,7 +39,7 @@ SyntaxError: expected '=>' after argument list, got "x" // SyntaxError: expected expression, got ';'
    -

    Правильным вариантом будет убрать запятую или добавить еще одно выражение:

    +

    Правильным вариантом будет убрать запятую или добавить ещё одно выражение:

    for (let i = 0; i < 5; ++i) {
       console.log(i);
    diff --git a/files/ru/web/javascript/reference/errors/unexpected_type/index.html b/files/ru/web/javascript/reference/errors/unexpected_type/index.html
    index c8ccbe028f..43015841f0 100644
    --- a/files/ru/web/javascript/reference/errors/unexpected_type/index.html
    +++ b/files/ru/web/javascript/reference/errors/unexpected_type/index.html
    @@ -25,7 +25,7 @@ TypeError: "x" is not a symbol
     
     

    Встречен неожиданный тип. Это часто случается со значениями {{jsxref("null")}} или {{jsxref("undefined")}}.

    -

    Так же, некоторые методы, такие как {{jsxref("Object.create()")}} или {{jsxref("Symbol.keyFor()")}}, требуют определенный тип, который должен быть предоставлен.

    +

    Так же, некоторые методы, такие как {{jsxref("Object.create()")}} или {{jsxref("Symbol.keyFor()")}}, требуют определённый тип, который должен быть предоставлен.

    Примеры

    @@ -39,7 +39,7 @@ var foo = null; foo.substring(1); // TypeError: foo is null -// Некоторые методы могут требовать определенный тип +// Некоторые методы могут требовать определённый тип var foo = {} Symbol.keyFor(foo); // TypeError: foo is not a symbol diff --git a/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html index 0c950c014e..c4f442f49e 100644 --- a/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html +++ b/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html @@ -18,7 +18,7 @@ SyntaxError: непредвиденный токен ( [Chrome]

    Что пошло не так?

    -

    В коде есть оператор function, для которого требуется имя. Вам нужно будет проверить, как определены функции и нужно ли предоставить для них имя, или если рассматриваемая функция должна быть выражением функции, {{Glossary("IIFE")}}, или если код функции вообще правильно размещен в этом контексте.

    +

    В коде есть оператор function, для которого требуется имя. Вам нужно будет проверить, как определены функции и нужно ли предоставить для них имя, или если рассматриваемая функция должна быть выражением функции, {{Glossary("IIFE")}}, или если код функции вообще правильно размещён в этом контексте.

    Примеры

    @@ -38,7 +38,7 @@ SyntaxError: непредвиденный токен ( [Chrome] return 'Hello world'; };
    -

    Или, ваша функция возможно, предназначена для IIFE (немедленно вызываемое выражение функции), которое является функцией, которая запускается, как только она определена. В этом случае вам понадобится еще несколько брекетов:

    +

    Или, ваша функция возможно, предназначена для IIFE (немедленно вызываемое выражение функции), которое является функцией, которая запускается, как только она определена. В этом случае вам понадобится ещё несколько брекетов:

    (function () {
     
    diff --git a/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.html b/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.html
    index ea9aca3e65..dd817a5407 100644
    --- a/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.html
    +++ b/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.html
    @@ -1,5 +1,5 @@
     ---
    -title: 'SyntaxError: unterminated string literal(незавершенный строковый литерал)'
    +title: 'SyntaxError: unterminated string literal(незавершённый строковый литерал)'
     slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal
     translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal
     ---
    @@ -34,7 +34,7 @@ SyntaxError: незадействованный строковый литера
     
    var longString = 'Это очень длинная строка, которая нуждается
                       перенос через несколько строк, потому что
                       в противном случае мой код нечитаем.";
    -// SyntaxError: незавершенный строковый литерал
    +// SyntaxError: незавершённый строковый литерал

    Вместо этого используйте оператор+, обратную косую черту или литералы шаблона. Вариант оператора + выглядит следующим образом:

    @@ -50,7 +50,7 @@ SyntaxError: незадействованный строковый литера в противном случае мой код нечитаем.";
    -

    Еще одна возможность-использовать шаблонные литералы, поддерживаемые в средах ECMAScript 2015:

    +

    Ещё одна возможность-использовать шаблонные литералы, поддерживаемые в средах ECMAScript 2015:

    var longString = `Это очень длинная строка, которая нуждается
                       в переносе через несколько строк, потому что
    diff --git a/files/ru/web/javascript/reference/errors/var_hides_argument/index.html b/files/ru/web/javascript/reference/errors/var_hides_argument/index.html
    index 91953a36c8..5b7c3d1f8e 100644
    --- a/files/ru/web/javascript/reference/errors/var_hides_argument/index.html
    +++ b/files/ru/web/javascript/reference/errors/var_hides_argument/index.html
    @@ -24,7 +24,7 @@ original_slug: Web/JavaScript/Reference/Errors/Переменные_скрыва
     
     

     

    -

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

    +

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

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

    diff --git a/files/ru/web/javascript/reference/functions/arguments/callee/index.html b/files/ru/web/javascript/reference/functions/arguments/callee/index.html index eaf41af79d..5326296bdd 100644 --- a/files/ru/web/javascript/reference/functions/arguments/callee/index.html +++ b/files/ru/web/javascript/reference/functions/arguments/callee/index.html @@ -29,7 +29,7 @@ translation_of: Web/JavaScript/Reference/Functions/arguments/callee

     

    -

    Действительно незаменимым оно остается всего в одной ситуации. Когда мы создаем анонимную функцию напрямую через конструктор Function.

    +

    Действительно незаменимым оно остаётся всего в одной ситуации. Когда мы создаём анонимную функцию напрямую через конструктор Function.

    var b = new Function("", "alert(typeof arguments.callee)");
    diff --git a/files/ru/web/javascript/reference/functions/arguments/index.html b/files/ru/web/javascript/reference/functions/arguments/index.html index b23710eba0..db4f25e9b6 100644 --- a/files/ru/web/javascript/reference/functions/arguments/index.html +++ b/files/ru/web/javascript/reference/functions/arguments/index.html @@ -105,7 +105,7 @@ console.log(typeof arguments[0]);
    return args.join(separator); }
    -

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

    +

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

    // возвращает "red, orange, blue"
     myConcat(", ", "red", "orange", "blue");
    @@ -118,7 +118,7 @@ myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");

     Функция, создающая HTML списки

    -

    В данном примере приведена функция, которая создает строку с HTML-разметкой для списка. Единственный ее аргумент - строка, определяющая вид списка: если его значение равно "u", формируется неупорядоченный (маркированный) список, а если "o", то упорядоченный (нумерованный):

    +

    В данном примере приведена функция, которая создаёт строку с HTML-разметкой для списка. Единственный её аргумент - строка, определяющая вид списка: если его значение равно "u", формируется неупорядоченный (маркированный) список, а если "o", то упорядоченный (нумерованный):

    function list(type) {
       var result = "<" + type + "l><li>";
    @@ -148,7 +148,7 @@ myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
    } foo(1, 2, 3); // { "0": 1, "1": 2, "2": 3 }
    -

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

    +

    Тем не менее, в нестрогих функциях соответствие между их аргументами и объектом arguments существует только в том случае, если функция не содержит никаких оставшихся параметров, параметров по умолчанию или деструктурированных параметров. Например, в функции, приведённой ниже, используется параметр по умолчанию, и в данном случае возвращаемый результат будет равен 10, а не 100:

    function bar(a=1) {
       arguments[0] = 100;
    @@ -164,7 +164,7 @@ myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
    } zoo(10); // 100
    -

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

    +

    На самом деле, если оставшиеся параметры, параметры по умолчанию или деструктурированные параметры не используются, формальные аргументы будут ссылаться на последние значения объекта arguments, при считывании значений формальных аргументов будут считаны последние данные из arguments, а при изменении значений формальных аргументов будет обновлён и объект arguments. Пример приведён в коде ниже:

    function func(a, b) {
         arguments[0] = 90;
    diff --git a/files/ru/web/javascript/reference/functions/arrow_functions/index.html b/files/ru/web/javascript/reference/functions/arrow_functions/index.html
    index bd2cc34fe1..6df06beb79 100644
    --- a/files/ru/web/javascript/reference/functions/arrow_functions/index.html
    +++ b/files/ru/web/javascript/reference/functions/arrow_functions/index.html
    @@ -66,7 +66,7 @@ f();  // 6
     
     elements.map(function(element) {
       return element.length;
    -}); // Это выражение вернет массив [8, 6, 7, 9]
    +}); // Это выражение вернёт массив [8, 6, 7, 9]
     
     // Функцию выше можно записать как стрелочную функцию:
     elements.map((element) => {
    @@ -123,7 +123,7 @@ var p = new Person();
     
     

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

    -

    Стрелочные функции не содержат собственный контекст this, а используют значение this окружающего контекста. Поэтому нижеприведенный код работает как предполагалось:

    +

    Стрелочные функции не содержат собственный контекст this, а используют значение this окружающего контекста. Поэтому нижеприведённый код работает как предполагалось:

    function Person(){
       this.age = 0;
    diff --git a/files/ru/web/javascript/reference/functions/default_parameters/index.html b/files/ru/web/javascript/reference/functions/default_parameters/index.html
    index 9043c38446..b257a5fe65 100644
    --- a/files/ru/web/javascript/reference/functions/default_parameters/index.html
    +++ b/files/ru/web/javascript/reference/functions/default_parameters/index.html
    @@ -23,7 +23,7 @@ translation_of: Web/JavaScript/Reference/Functions/Default_parameters
     
     

    Описание

    -

    В JavaScript параметры функции, которым при ее вызове не передаются значения, принимают по умолчанию значение {{jsxref("undefined")}}. Однако в некоторых случаях может быть полезно задать иное значение по умолчанию. Именно для таких случаев предназначены параметры по умолчанию.

    +

    В JavaScript параметры функции, которым при её вызове не передаются значения, принимают по умолчанию значение {{jsxref("undefined")}}. Однако в некоторых случаях может быть полезно задать иное значение по умолчанию. Именно для таких случаев предназначены параметры по умолчанию.

    В прошлом для проверки параметров и задания их значений по умолчанию использовался код в теле функции, в котором проверялось, не равны ли значения параметров undefined.

    @@ -47,7 +47,7 @@ multiply(5, 2); // 10 multiply(5); // 5
    -

    С появлением в ES2015 параметров по умолчанию стало возможным обходиться без проверки параметров в теле функции. Так, в приведенном выше примере достаточно в заголовке функции указать 1 в качестве значения по умолчанию для параметра b:

    +

    С появлением в ES2015 параметров по умолчанию стало возможным обходиться без проверки параметров в теле функции. Так, в приведённом выше примере достаточно в заголовке функции указать 1 в качестве значения по умолчанию для параметра b:

    function multiply(a, b = 1) {
       return a*b;
    @@ -78,7 +78,7 @@ test(null);      // 'object' (num получил значение null)
     
     

    Параметры по умолчанию вычисляются в момент вызова функции

    -

    В Javascript параметры по умолчанию вычисляются в момент вызова функции. В отличие от языка Python, при каждом вызове функции создается новое лексическое окружение функции.

    +

    В Javascript параметры по умолчанию вычисляются в момент вызова функции. В отличие от языка Python, при каждом вызове функции создаётся новое лексическое окружение функции.

    function append(value, array = []) {
       array.push(value);
    @@ -117,7 +117,7 @@ callSomething(); // 2
     greet('David', 'Hi');  // ["David", "Hi", "Hi David"]
     greet('David', 'Hi', 'Happy Birthday!');  // ["David", "Hi", "Happy Birthday!"]
    -

    Следующий пример пример еще раз иллюстрирует эту возможность, а также позволяет еще раз сравнить два способа достижения одного и того же результата: с использованием инициализации параметров по умолчанию и без ее использования:

    +

    Следующий пример пример ещё раз иллюстрирует эту возможность, а также позволяет ещё раз сравнить два способа достижения одного и того же результата: с использованием инициализации параметров по умолчанию и без её использования:

    function go() {
       return ":P"
    @@ -158,7 +158,7 @@ withoutDefaults.call({value:"=^_^="});
     
     

    Инициализация с помощью функций, определяемых в теле функции

    -

    Начиная с версии Gecko 33 {{geckoRelease(33)}} функции, определяемые в теле самой функции, не могут быть использованы для инициализации параметров по умолчанию; попытка это сделать приведет к ошибке {{jsxref("ReferenceError")}}. Параметры по умолчанию всегда вычисляются до обработки описаний функций, определяемых в теле функции.

    +

    Начиная с версии Gecko 33 {{geckoRelease(33)}} функции, определяемые в теле самой функции, не могут быть использованы для инициализации параметров по умолчанию; попытка это сделать приведёт к ошибке {{jsxref("ReferenceError")}}. Параметры по умолчанию всегда вычисляются до обработки описаний функций, определяемых в теле функции.

    // Вызовет ошибку ReferenceError!
     function f(a = go()) {
    diff --git a/files/ru/web/javascript/reference/functions/get/index.html b/files/ru/web/javascript/reference/functions/get/index.html
    index 9e2c329c8e..0e6803733f 100644
    --- a/files/ru/web/javascript/reference/functions/get/index.html
    +++ b/files/ru/web/javascript/reference/functions/get/index.html
    @@ -49,7 +49,7 @@ translation_of: Web/JavaScript/Reference/Functions/get
     
     

    Определение геттера на новом объекте в момент инициализации этого объекта

    -

    Ниже создается псевдо-свойство latest для объекта obj, который выведет последний элемент массива в консоль лог.

    +

    Ниже создаётся псевдо-свойство latest для объекта obj, который выведет последний элемент массива в консоль лог.

    const obj = {
       log: ['example','test'],
    @@ -98,10 +98,10 @@ console.log(obj.foo); // "bar"

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

    -

    Дополнительная техника оптимизации заключается в том, чтобы лениться или откладывать вычисление значения свойства и кэшировать его для дальнейшего доступа. Так поступают умные или запоминающие геттеры. Значение вычисляется в первый раз при вызове геттера и затем сохраняется в кэше так, что последующие обращения будут возвращать кэшированные значения без его пересчета. Это полезно в следующих ситуациях:

    +

    Дополнительная техника оптимизации заключается в том, чтобы лениться или откладывать вычисление значения свойства и кэшировать его для дальнейшего доступа. Так поступают умные или запоминающие геттеры. Значение вычисляется в первый раз при вызове геттера и затем сохраняется в кэше так, что последующие обращения будут возвращать кэшированные значения без его пересчёта. Это полезно в следующих ситуациях:

      -
    • Если вычисление значения свойства дорого (занимает много оперативной памяти или процессорного времени, порождает рабочий поток, получает удаленный файл, и т. д.).
    • +
    • Если вычисление значения свойства дорого (занимает много оперативной памяти или процессорного времени, порождает рабочий поток, получает удалённый файл, и т. д.).
    • Если сейчас это значение не нужно. Оно будет использоваться позже, или в некоторых случаях оно не используется вообще.
    • Если оно используется, к нему будут обращаться несколько раз, и нет необходимости его пересчитывать, так как значение не будет изменено, или не должно пересчитываться.
    @@ -119,7 +119,7 @@ console.log(obj.foo); // "bar"

    get и defineProperty

    -

    Использование ключевого слова get и {{jsxref("Object.defineProperty()")}} дает похожие результаты, но при использовании в {{jsxref("classes")}} между ними есть тонкая разница.

    +

    Использование ключевого слова get и {{jsxref("Object.defineProperty()")}} даёт похожие результаты, но при использовании в {{jsxref("classes")}} между ними есть тонкая разница.

    При использовании get свойство будет определено в прототипе объекта, в то время, как при использовании {{jsxref ("Object.defineProperty ()")}} свойство будет определено в экземпляре, к которому применяется.

    diff --git a/files/ru/web/javascript/reference/functions/method_definitions/index.html b/files/ru/web/javascript/reference/functions/method_definitions/index.html index 2a7f130d76..bc7b16eac1 100644 --- a/files/ru/web/javascript/reference/functions/method_definitions/index.html +++ b/files/ru/web/javascript/reference/functions/method_definitions/index.html @@ -38,7 +38,7 @@ original_slug: Web/JavaScript/Reference/Functions/Определение_мет

    Сокращение методов-генераторов

    -

    Методы-генераторы также могут быть определены используя короткий синтаксис. Обратите внимание, что звездочка (*) в коротком синтаксисе должна быть перед именем свойства генератора. То есть, * g(){} будет работать, а g *(){} не будет.

    +

    Методы-генераторы также могут быть определены используя короткий синтаксис. Обратите внимание, что звёздочка (*) в коротком синтаксисе должна быть перед именем свойства генератора. То есть, * g(){} будет работать, а g *(){} не будет.

    // Используя свойство с именем (pre-ES6)
     var obj2 = {
    diff --git a/files/ru/web/javascript/reference/functions/set/index.html b/files/ru/web/javascript/reference/functions/set/index.html
    index 97b89211c1..438bd10539 100644
    --- a/files/ru/web/javascript/reference/functions/set/index.html
    +++ b/files/ru/web/javascript/reference/functions/set/index.html
    @@ -41,13 +41,13 @@ translation_of: Web/JavaScript/Reference/Functions/set
     
-

Сеттер может быть удален оператором delete.

+

Сеттер может быть удалён оператором delete.

Примеры

Определение сеттера при инициализации новых объектов

-

Это позволит определить псевдо-параметр current объекта o, который задает значение, обновляющее значение log:

+

Это позволит определить псевдо-параметр current объекта o, который задаёт значение, обновляющее значение log:

var o = {
   set current (str) {
@@ -57,7 +57,7 @@ translation_of: Web/JavaScript/Reference/Functions/set
 }
 
-

обратите внимание, что current не определен и любые попытки доступа к нему вернут undefined.

+

обратите внимание, что current не определён и любые попытки доступа к нему вернут undefined.

Удаление сеттера оператором delete

diff --git a/files/ru/web/javascript/reference/global_objects/array/concat/index.html b/files/ru/web/javascript/reference/global_objects/array/concat/index.html index b3c2fa6eea..5d2bff7df7 100644 --- a/files/ru/web/javascript/reference/global_objects/array/concat/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/concat/index.html @@ -119,7 +119,7 @@ console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3]

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.concat")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/every/index.html b/files/ru/web/javascript/reference/global_objects/array/every/index.html index 830be8882f..dc64e46dc1 100644 --- a/files/ru/web/javascript/reference/global_objects/array/every/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/every/index.html @@ -50,7 +50,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/every

Описание

-

Метод every() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого callback вернет ложное значение (значение, становящееся равным false при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод every() немедленно вернёт false. В противном случае, если callback вернёт true для всех элементов массива, метод every() вернёт true. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

+

Метод every() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдёт такой, для которого callback вернёт ложное значение (значение, становящееся равным false при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод every() немедленно вернёт false. В противном случае, если callback вернёт true для всех элементов массива, метод every() вернёт true. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

diff --git a/files/ru/web/javascript/reference/global_objects/array/fill/index.html b/files/ru/web/javascript/reference/global_objects/array/fill/index.html index 1e3fb187da..3bb59fb99d 100644 --- a/files/ru/web/javascript/reference/global_objects/array/fill/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/fill/index.html @@ -146,7 +146,7 @@ arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.fill")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/filter/index.html b/files/ru/web/javascript/reference/global_objects/array/filter/index.html index da6a9296ae..2eb7f46f9f 100644 --- a/files/ru/web/javascript/reference/global_objects/array/filter/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/filter/index.html @@ -287,7 +287,7 @@ console.log(deleteWords)

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.filter")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/find/index.html b/files/ru/web/javascript/reference/global_objects/array/find/index.html index ceef78d17d..46c0b0e693 100644 --- a/files/ru/web/javascript/reference/global_objects/array/find/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/find/index.html @@ -60,7 +60,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/find

Метод find не изменяет массив, для которого он был вызван.

-

Диапазон элементов, обрабатываемых методом find, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода find, не будут посещены функцией callback. Если существующие, непосещение элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени когда метод find посетит их; удалённые элементы все еще будут посещены. 

+

Диапазон элементов, обрабатываемых методом find, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода find, не будут посещены функцией callback. Если существующие, непосещение элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени когда метод find посетит их; удалённые элементы все ещё будут посещены. 

Примеры

diff --git a/files/ru/web/javascript/reference/global_objects/array/flat/index.html b/files/ru/web/javascript/reference/global_objects/array/flat/index.html index 236fa402fa..9fbccf3f75 100644 --- a/files/ru/web/javascript/reference/global_objects/array/flat/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/flat/index.html @@ -31,7 +31,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat

Возвращаемое значение

-

Новый массив с объединенными в него подмассивами.

+

Новый массив с объединёнными в него подмассивами.

Примеры

@@ -76,7 +76,7 @@ arr1.reduce((acc, val) => acc.concat(val), []);// [1, 2, 3, 4] const flatSingle = arr => [].concat(...arr);
-
// Для развертывания многомерных массивов используем рекурсию, reduce и concat
+
// Для развёртывания многомерных массивов используем рекурсию, reduce и concat
 const arr = [1, 2, [3, 4, [5, 6]]];
 
 function flatDeep(arr, d = 1) {
diff --git a/files/ru/web/javascript/reference/global_objects/array/foreach/index.html b/files/ru/web/javascript/reference/global_objects/array/foreach/index.html
index 9a349176f9..35bf8b9a41 100644
--- a/files/ru/web/javascript/reference/global_objects/array/foreach/index.html
+++ b/files/ru/web/javascript/reference/global_objects/array/foreach/index.html
@@ -30,7 +30,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach
 
 
callback
-
Функция, которая будет вызвана для каждого элемента массива. Она принимает от одного до трех аргументов:
+
Функция, которая будет вызвана для каждого элемента массива. Она принимает от одного до трёх аргументов:
currentValue
@@ -253,7 +253,7 @@ words.forEach((word) => {

Выравнивание (уплощение) массива

-

Следующий пример приведен только для целей обучения. Если вы хотите выравнять массив с помощью встроенных методов, вы можете использовать {{jsxref("Array.prototype.flat()")}}

+

Следующий пример приведён только для целей обучения. Если вы хотите выравнять массив с помощью встроенных методов, вы можете использовать {{jsxref("Array.prototype.flat()")}}

function flatten(arr) {
   const result = []
@@ -370,7 +370,7 @@ if (!Array.prototype.forEach) {
 

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.forEach")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/keys/index.html b/files/ru/web/javascript/reference/global_objects/array/keys/index.html index 94cc84dd43..21899980d1 100644 --- a/files/ru/web/javascript/reference/global_objects/array/keys/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/keys/index.html @@ -76,7 +76,7 @@ console.log(denseKeys); // [0, 1, 2]

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.keys")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html index 2b69fd256f..8857ca7b47 100644 --- a/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html @@ -145,7 +145,7 @@ if (!Array.prototype.lastIndexOf) {

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.lastIndexOf")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/map/index.html b/files/ru/web/javascript/reference/global_objects/array/map/index.html index 89a4c3362c..b9adf151c8 100644 --- a/files/ru/web/javascript/reference/global_objects/array/map/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/map/index.html @@ -270,7 +270,7 @@ if (!Array.prototype.map) {

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.map")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/reduce/index.html b/files/ru/web/javascript/reference/global_objects/array/reduce/index.html index b135b336ee..72c06b90b5 100644 --- a/files/ru/web/javascript/reference/global_objects/array/reduce/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/reduce/index.html @@ -302,7 +302,7 @@ if (!Array.prototype.reduce) {

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.reduce")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/reverse/index.html b/files/ru/web/javascript/reference/global_objects/array/reverse/index.html index 811d7adea9..d5845f1bbd 100644 --- a/files/ru/web/javascript/reference/global_objects/array/reverse/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/reverse/index.html @@ -28,7 +28,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse

Возвращаемое значение

-

Перевернутый массив

+

Перевёрнутый массив

Описание

@@ -82,7 +82,7 @@ console.log(myArray) // ['три', 'два', 'один']

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.reverse")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/slice/index.html b/files/ru/web/javascript/reference/global_objects/array/slice/index.html index d3b197f00b..4654f52d0a 100644 --- a/files/ru/web/javascript/reference/global_objects/array/slice/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/slice/index.html @@ -28,8 +28,8 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice
begin {{optional_inline}}
Индекс (счёт начинается с нуля), по которому начинать извлечение.
Если индекс отрицательный, begin указывает смещение от конца последовательности. Вызов slice(-2) извлечёт два последних элемента последовательности.
-
Если begin не определен, slice() начинает работать с индекса 0.
-
Если begin больше длины последовательности вернется пустой массив.
+
Если begin не определён, slice() начинает работать с индекса 0.
+
Если begin больше длины последовательности вернётся пустой массив.
end {{optional_inline}}
Индекс (счёт начинается с нуля), по которому заканчивать извлечение. Метод slice() извлекает элементы с индексом меньше end.
Вызов slice(1, 4) извлечёт элементы со второго по четвёртый (элементы по индексам 1, 2 и 3).
@@ -39,7 +39,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice

Возвращаемое значение

-

Новый массив, содержащий извлеченные элементы.

+

Новый массив, содержащий извлечённые элементы.

Описание

@@ -228,7 +228,7 @@ var list1 = list(1, 2, 3); // [1, 2, 3]

Совместимость с браузерами

- +

{{Compat("javascript.builtins.Array.slice")}}

diff --git a/files/ru/web/javascript/reference/global_objects/array/some/index.html b/files/ru/web/javascript/reference/global_objects/array/some/index.html index 9bc3fbd7f3..a9d6aea2e0 100644 --- a/files/ru/web/javascript/reference/global_objects/array/some/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/some/index.html @@ -52,7 +52,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/some

Описание

-

Метод some() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого callback вернет истинное значение (значение, становящееся равным true при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод some() немедленно вернёт true. В противном случае, если callback вернёт false для всех элементов массива, метод some() вернёт false. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

+

Метод some() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдёт такой, для которого callback вернёт истинное значение (значение, становящееся равным true при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод some() немедленно вернёт true. В противном случае, если callback вернёт false для всех элементов массива, метод some() вернёт false. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

diff --git a/files/ru/web/javascript/reference/global_objects/array/sort/index.html b/files/ru/web/javascript/reference/global_objects/array/sort/index.html index 16b73503c5..f33119cd53 100644 --- a/files/ru/web/javascript/reference/global_objects/array/sort/index.html +++ b/files/ru/web/javascript/reference/global_objects/array/sort/index.html @@ -27,7 +27,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort

Возвращаемое значение

-

Отсортированный массив. Важно, что копия массива не создается - массив сортируется на месте.

+

Отсортированный массив. Важно, что копия массива не создаётся - массив сортируется на месте.

Описание

diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html index 3dfc1687ab..19d63d3859 100644 --- a/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html @@ -8,7 +8,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer ---
{{JSRef}}
-

Объект ArrayBuffer используется для работы с бинарными данными. Он представляет собой ссылку на поток "сырых" двоичных данных, однако работать с ними напрямую возможности не дает. Вместо этого, вы можете создать типизированный массив или объект {{jsxref("DataView")}}, который можно использовать для чтения и записи данных в ArrayBuffer

+

Объект ArrayBuffer используется для работы с бинарными данными. Он представляет собой ссылку на поток "сырых" двоичных данных, однако работать с ними напрямую возможности не даёт. Вместо этого, вы можете создать типизированный массив или объект {{jsxref("DataView")}}, который можно использовать для чтения и записи данных в ArrayBuffer

Синтаксис

@@ -24,11 +24,11 @@ translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer

Возвращаемое значение

-

Новый объект ArrayBuffer определенного размера. Изначально содержимое равно 0.

+

Новый объект ArrayBuffer определённого размера. Изначально содержимое равно 0.

Описание

-

Конструктор ArrayBuffer создает новый ArrayBuffer установленного в байтах размера.

+

Конструктор ArrayBuffer создаёт новый ArrayBuffer установленного в байтах размера.

Создание буфера

@@ -50,16 +50,16 @@ translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
-
Возвращает true если arg – одно из представлений ArrayBuffer, например типизированный массив или {{jsxref("DataView")}}. Вернет false в остальных случаях.
+
Возвращает true если arg – одно из представлений ArrayBuffer, например типизированный массив или {{jsxref("DataView")}}. Вернёт false в остальных случаях.
{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}
-
Вернет новый ArrayBuffer, контент которого будет взят из данных oldBuffer, а затем усечен или дополнен нулевыми значениями до newByteLength.
+
Вернёт новый ArrayBuffer, контент которого будет взят из данных oldBuffer, а затем усечён или дополнен нулевыми значениями до newByteLength.

Пример

-

В этом примере мы создаем 8-байтный буфер с {{jsxref("Global_Objects/Int32Array", "Int32Array")}} представлением:

+

В этом примере мы создаём 8-байтный буфер с {{jsxref("Global_Objects/Int32Array", "Int32Array")}} представлением:

var buffer = new ArrayBuffer(8);
 var view   = new Int32Array(buffer);
@@ -76,7 +76,7 @@ var view = new Int32Array(buffer);
{{SpecName('Typed Array')}} {{Spec2('Typed Array')}} - Заменен спецификацией ECMAScript 6. + Заменён спецификацией ECMAScript 6. {{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html index 84b8592a5e..6182148417 100644 --- a/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice ---
{{JSRef}}
-

Метод slice() вернет новый ArrayBuffer, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).

+

Метод slice() вернёт новый ArrayBuffer, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).

Syntax

diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html index b1475ad6e3..41f858c951 100644 --- a/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction ---
{{JSRef}}
-

Конструктор AsyncFunction создает новый объект {{jsxref("Statements/async_function", "async function")}}. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.

+

Конструктор AsyncFunction создаёт новый объект {{jsxref("Statements/async_function", "async function")}}. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.

Обратите внимание, что AsyncFunction не является глобальным объектом. Её можно получить, выполнив следующий код.

@@ -20,14 +20,14 @@ translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction
arg1, arg2, ... argN
-
Имена, используемые функцией как формальные имена аргументов. Каждое имя должно быть строкой, которая соответствует действительному идентификатору JavaScript или списку таких строк, разделенных запятой; например, "x", "theValue", или "a,b". 
+
Имена, используемые функцией как формальные имена аргументов. Каждое имя должно быть строкой, которая соответствует действительному идентификатору JavaScript или списку таких строк, разделённых запятой; например, "x", "theValue", или "a,b". 
functionBody
Строка, содержащая в себе определение функции в исходном коде JavaScript .

Описание

-

Объекты {{jsxref("Statements/async_function", "async function")}}, созданные с помощью AsyncFunction constructor  будут распарсены в момент, когда функция создается. Это менее эффективно, чем объявлять асинхронную функцию с помощью {{jsxref("Statements/async_function", "async function expression")}} и вызывать ее внутри вашего кода, поскольку такие функции анализируются с остальной частью кода.

+

Объекты {{jsxref("Statements/async_function", "async function")}}, созданные с помощью AsyncFunction constructor  будут распарсены в момент, когда функция создаётся. Это менее эффективно, чем объявлять асинхронную функцию с помощью {{jsxref("Statements/async_function", "async function expression")}} и вызывать её внутри вашего кода, поскольку такие функции анализируются с остальной частью кода.

Все аргументы, переданные функции, рассматриваются как имена идентификаторов параметров в создаваемой функции в том порядке, в котором они передаются.

diff --git a/files/ru/web/javascript/reference/global_objects/atomics/add/index.html b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html index 546fdbd27f..003ce1619a 100644 --- a/files/ru/web/javascript/reference/global_objects/atomics/add/index.html +++ b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add ---
{{JSRef}}
-

Статический метод Atomics.add() добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.

+

Статический метод Atomics.add() добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдёт, пока изменённое значение не будет записано обратно.

Синтаксис

@@ -16,7 +16,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add
typedArray
-
Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
+
Разделённый массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
index
Позиция в typedArray для добавления value.
value
diff --git a/files/ru/web/javascript/reference/global_objects/atomics/index.html b/files/ru/web/javascript/reference/global_objects/atomics/index.html index d51c14af2e..7411110086 100644 --- a/files/ru/web/javascript/reference/global_objects/atomics/index.html +++ b/files/ru/web/javascript/reference/global_objects/atomics/index.html @@ -22,7 +22,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics

Атомарные операции

-

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

+

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

{{jsxref("Atomics.add()")}}
@@ -50,12 +50,12 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics

Wait и notify

-

wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определенное состояние не станет true, и обычно используется как блокирующие конструкции.

+

wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определённое состояние не станет true, и обычно используется как блокирующие конструкции.

{{jsxref("Atomics.wait()")}}
-

Проверяет, содержится в указанной позиции массива все еще представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенте, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке браузера).

+

Проверяет, содержится в указанной позиции массива все ещё представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенте, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке браузера).

{{jsxref("Atomics.wake()")}}
Пробуждает некоторых агентов, которые спят в очереди ожидания в указанной позиции массива. Возвращает количество агентов, которые были разбужены.
@@ -145,7 +145,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics

Похожие заметки

-

До SpiderMonkey 48 {{geckoRelease(48)}}, финальные имена API и семантика не были еще реализованы. Изменения между Firefox v. 46 и v. 48:

+

До SpiderMonkey 48 {{geckoRelease(48)}}, финальные имена API и семантика не были ещё реализованы. Изменения между Firefox v. 46 и v. 48:

  • Методы Atomics.futexWakeOrRequeue() и Atomics.fence() полностью удалены ({{bug(1259544)}} и {{bug(1225028)}}).
  • diff --git a/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html index d3a9bbd3b4..05a2727be0 100644 --- a/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html +++ b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub ---
    {{JSRef}}
    -

    Статический метод Atomics.sub() вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.

    +

    Статический метод Atomics.sub() вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдёт, пока изменённое значение не будет записано обратно.

    Синтаксис

    @@ -16,7 +16,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub
    typedArray
    -
    Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
    +
    Разделённый массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
    index
    Позиция в typedArray для добавления value.
    value
    diff --git a/files/ru/web/javascript/reference/global_objects/bigint/index.html b/files/ru/web/javascript/reference/global_objects/bigint/index.html index c8e43137bf..108df340f7 100644 --- a/files/ru/web/javascript/reference/global_objects/bigint/index.html +++ b/files/ru/web/javascript/reference/global_objects/bigint/index.html @@ -10,14 +10,14 @@ translation_of: Web/JavaScript/Reference/Global_Objects/BigInt ---

    {{JSRef}}

    -

    BigInt это встроенный объект, который предоставляет способ представлять целые числа больше 253 - 1, наибольшего числа, которое JavaScript может надежно представить с {{JSxRef("Number")}} примитивом. Это максимальное значение можно получить, обратившись к {{JSxRef("Number.MAX_SAFE_INTEGER")}}.

    +

    BigInt это встроенный объект, который предоставляет способ представлять целые числа больше 253 - 1, наибольшего числа, которое JavaScript может надёжно представить с {{JSxRef("Number")}} примитивом. Это максимальное значение можно получить, обратившись к {{JSxRef("Number.MAX_SAFE_INTEGER")}}.

    Описание

    -

    BigInt создается путем добавления n в конец целочисленного литерала — 10n — или вызовом функции BigInt().

    +

    BigInt создаётся путём добавления n в конец целочисленного литерала — 10n — или вызовом функции BigInt().

    const theBiggestInt = 9007199254740991n;
     
    @@ -44,7 +44,7 @@ const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111"
     
     

    Тип

    -

    При проверке с использованием оператора typeof, BigInt выдает тип "bigint":

    +

    При проверке с использованием оператора typeof, BigInt выдаёт тип "bigint":

    typeof 1n === 'bigint'; // true
     typeof BigInt('1') === 'bigint'; // true
    @@ -57,7 +57,7 @@ typeof BigInt('1') === 'bigint'; // true
     
     

    Операторы

    -

    Следующие операторы могут использоваться с BigInt (или объектом-оберткой BigInt): +, *, -, **, %.

    +

    Следующие операторы могут использоваться с BigInt (или объектом-обёрткой BigInt): +, *, -, **, %.

    Побитовые операции также поддерживаются, кроме >>> (сдвиг вправо с заполнением нулями).

    @@ -91,7 +91,7 @@ bigN * -1n

    Оператор / также работает, как и ожидалось, с целыми числами. Однако, поскольку это BigInt, эта операция будет округляться в меньшую сторону, то есть она не будет возвращать какие-либо дробные цифры.

    -

    Результат операции с дробным результатом будет округлен в меньшую сторону при использовании  BigInt.

    +

    Результат операции с дробным результатом будет округлён в меньшую сторону при использовании  BigInt.

    const expected = 4n / 2n;
    @@ -138,7 +138,7 @@ mixed.sort();
     // ↪ [-12n, 0, 0n, 10, 4n, 4, 6]
     
    -

    Обратите внимание, что сравнения с обьектом-оберткой BigInt действуют как с другими объектами, указывая на равенство только когда сравнивается идентичный экземпляр объекта:

    +

    Обратите внимание, что сравнения с обьектом-обёрткой BigInt действуют как с другими объектами, указывая на равенство только когда сравнивается идентичный экземпляр объекта:

    0n === Object(0n); // false
     Object(0n) === Object(0n); // false
    @@ -236,7 +236,7 @@ Boolean(12n)
     
     

    Примеры

    -

    Расчет простых чисел

    +

    Расчёт простых чисел

    // Возвращает true, если BigInt — простое число
     function isPrime(p) {
    diff --git a/files/ru/web/javascript/reference/global_objects/date/index.html b/files/ru/web/javascript/reference/global_objects/date/index.html
    index a6ce5896e1..4eb5876bd2 100644
    --- a/files/ru/web/javascript/reference/global_objects/date/index.html
    +++ b/files/ru/web/javascript/reference/global_objects/date/index.html
    @@ -181,7 +181,7 @@ yourFunctionReturn = printElapsedTime(yourFunction);
     
     
    var seconds = Math.floor(Date.now() / 1000);
    -

    В этом случае важно возвращать только целое число (так что простое деление не подойдет), а также возвращать только фактически прошедшие секунды (поэтому этот код использует {{jsxref ("Math.floor ()")}} а не {{jsxref ("Math.round ()")}}).

    +

    В этом случае важно возвращать только целое число (так что простое деление не подойдёт), а также возвращать только фактически прошедшие секунды (поэтому этот код использует {{jsxref ("Math.floor ()")}} а не {{jsxref ("Math.round ()")}}).

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

    diff --git a/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html index 3cf8647e14..e9718854f2 100644 --- a/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html +++ b/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html @@ -36,7 +36,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMinutes

    Возвращаемое значение

    -

    Количество миллисекунд между 1 января 1970 00:00:00 UTC и обновленной датой.

    +

    Количество миллисекунд между 1 января 1970 00:00:00 UTC и обновлённой датой.

    Описание

    diff --git a/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html b/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html index f603359b99..a4991d3e79 100644 --- a/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html +++ b/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html @@ -21,7 +21,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString

    Нет.

    Описание

    -

    Значение, возвращаемое методом toUTCString(), является человеко-читаемой строкой в часовом поясе UTC. Формат возвращаемого значения зависит от платформы. Наиболее распространенным значением является форматированная по RFC-1123 временная метка, которая является немного обновлённой версией временной метки RFC-822.

    +

    Значение, возвращаемое методом toUTCString(), является человеко-читаемой строкой в часовом поясе UTC. Формат возвращаемого значения зависит от платформы. Наиболее распространённым значением является форматированная по RFC-1123 временная метка, которая является немного обновлённой версией временной метки RFC-822.

    Примеры

    diff --git a/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html b/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html index 8e7562ad05..98b6336f42 100644 --- a/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html +++ b/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html @@ -36,7 +36,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent

    Исключения

    -

    При неправильном использовании выдает исключение {{jsxref("URIError")}} ("неверный формат последовательности URI").

    +

    При неправильном использовании выдаёт исключение {{jsxref("URIError")}} ("неверный формат последовательности URI").

    Описание

    diff --git a/files/ru/web/javascript/reference/global_objects/encodeuri/index.html b/files/ru/web/javascript/reference/global_objects/encodeuri/index.html index 9b6c6d7382..65e8cfda73 100644 --- a/files/ru/web/javascript/reference/global_objects/encodeuri/index.html +++ b/files/ru/web/javascript/reference/global_objects/encodeuri/index.html @@ -82,7 +82,7 @@ console.log(encodeURIComponent('\uD800')); // один низкий суррогат бросит "URIError: malformed URI sequence" console.log(encodeURIComponent('\uDFFF'));
    -

    Также заметим, что следуя наиболее свежей RFC3986 для URL, которая делает квадратные скобки защищенными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:

    +

    Также заметим, что следуя наиболее свежей RFC3986 для URL, которая делает квадратные скобки защищёнными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:

    function fixedEncodeURI (str) {
         return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
    diff --git a/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html b/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html
    index a0c6b028db..7493e53632 100644
    --- a/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html
    +++ b/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html
    @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent
     ---
     
    {{jsSidebar("Objects")}}
    -

    encodeURIComponent() - метод, кодирующий компонент универсального идентификатора ресурса (URI) заменой каждой определенной последовательности символов одной, двумя, тремя или четырьмя последовательностями символов, представленных в кодировке UTF-8  (будет только 4 управляющих последовательности для символов, состоящих из 2 "суррогатных" символов).

    +

    encodeURIComponent() - метод, кодирующий компонент универсального идентификатора ресурса (URI) заменой каждой определённой последовательности символов одной, двумя, тремя или четырьмя последовательностями символов, представленных в кодировке UTF-8  (будет только 4 управляющих последовательности для символов, состоящих из 2 "суррогатных" символов).

    Синтаксис

    diff --git a/files/ru/web/javascript/reference/global_objects/error/index.html b/files/ru/web/javascript/reference/global_objects/error/index.html index 90a108b2a4..6ac3ffc666 100644 --- a/files/ru/web/javascript/reference/global_objects/error/index.html +++ b/files/ru/web/javascript/reference/global_objects/error/index.html @@ -37,7 +37,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Error

    Использование как функции

    -

    Когда Error используется как функции-- без {{jsxref("Operators/new", "new")}}, она возвращает Error объект. Следовательно простой вызов Error произведет тот же результат, что и конструктор Error объявленный через new.

    +

    Когда Error используется как функции-- без {{jsxref("Operators/new", "new")}}, она возвращает Error объект. Следовательно простой вызов Error произведёт тот же результат, что и конструктор Error объявленный через new.

    // this:
     const x = Error('I was created using a function call!');
    diff --git a/files/ru/web/javascript/reference/global_objects/escape/index.html b/files/ru/web/javascript/reference/global_objects/escape/index.html
    index edc41f8259..05ae768fd4 100644
    --- a/files/ru/web/javascript/reference/global_objects/escape/index.html
    +++ b/files/ru/web/javascript/reference/global_objects/escape/index.html
    @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/escape
     ---
     
    {{jsSidebar("Objects")}} {{deprecated_header}}
    -

    Устаревший метод escape() возвращает новую строку, в которой определенные символы заменены шестнадцатеричной управляющей последовательностью.  Используйте методы {{jsxref("encodeURI")}} или {{jsxref("encodeURIComponent")}} вместо него.

    +

    Устаревший метод escape() возвращает новую строку, в которой определённые символы заменены шестнадцатеричной управляющей последовательностью.  Используйте методы {{jsxref("encodeURI")}} или {{jsxref("encodeURIComponent")}} вместо него.

    Синтаксис

    diff --git a/files/ru/web/javascript/reference/global_objects/eval/index.html b/files/ru/web/javascript/reference/global_objects/eval/index.html index 0c32530435..49bec21796 100644 --- a/files/ru/web/javascript/reference/global_objects/eval/index.html +++ b/files/ru/web/javascript/reference/global_objects/eval/index.html @@ -44,7 +44,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/eval

    eval() можно использовать для вычисления значения арифметического выражения, записанного в строковом виде, на более поздней стадии исполнения. Предположим, существует переменная x. Можно отложить вычисление выражения, в котором содержится х, если присвоить переменной это выражение в виде строки (допустим, "3 * x + 2"), а затем вызвать eval() в более поздней точке кода.

    -

    Если аргумент, переданный eval(), не является строкой, eval() возвращает его неизменным. В следующем примере определен конструктор String, и eval() не вычисляет значение выражения, записанного в строковом виде, а возвращает объект типа String.

    +

    Если аргумент, переданный eval(), не является строкой, eval() возвращает его неизменным. В следующем примере определён конструктор String, и eval() не вычисляет значение выражения, записанного в строковом виде, а возвращает объект типа String.

    eval(new String("2 + 2")); // возвращает объект типа String, содержащий "2 + 2"
     eval("2 + 2");             // возвращает 4
    @@ -62,7 +62,7 @@ eval(expression.toString());
       var x = 2, y = 4;
       console.log(eval("x + y"));  // Прямой вызов, использует локальную области видимости, результат - 6
       var geval = eval;
    -  console.log(geval("x + y")); // Непрямой вызов, использует глобальную область видимости, бросит ReferenceError, т.к. `x` - не определен
    +  console.log(geval("x + y")); // Непрямой вызов, использует глобальную область видимости, бросит ReferenceError, т.к. `x` - не определён
     }
     
    @@ -93,7 +93,7 @@ var result = obj[ propname ]; // obj[ "a" ] то же, что и obj.a

    Используйте функции вместо исполнения фрагментов кода

    -

    У JavaScript функции первого класса, что значит, что вы можете передавать функции как аргументы, хранить их в переменных или свойствах объектов и так далее. Многие DOM API созданы с учетом этого, так что вы можете (и вам следует) писать:

    +

    У JavaScript функции первого класса, что значит, что вы можете передавать функции как аргументы, хранить их в переменных или свойствах объектов и так далее. Многие DOM API созданы с учётом этого, так что вы можете (и вам следует) писать:

    // вместо setTimeout(" ... ", 1000) :
     setTimeout(function() { ... }, 1000);
    @@ -111,7 +111,7 @@ elt.addEventListener("click", function() { ... } , false); 

    Передавайте данные вместо кода

    -

    К примеру, расширение, созданное изменять содержимое веб-страниц, должно иметь правила, определенные в XPath, а не JS коде.

    +

    К примеру, расширение, созданное изменять содержимое веб-страниц, должно иметь правила, определённые в XPath, а не JS коде.

    Выполняйте код с ограниченными правами

    @@ -132,7 +132,7 @@ eval(z); // вернёт 42

    Использование eval для исполнения строки, содержащей операторы JavaScript

    -

    Следующий пример использует eval() для получения значения выражения str. Эта строка состоит из JavaScript выражений, печатающих в консоль, и, если x равен пяти, призывающих z значение 42, или 0 в противном случае. Когда второе выражение будет исполнено, eval() будет считать выражения выполненными, а также это установит значение выражению переменной z и вернет его.

    +

    Следующий пример использует eval() для получения значения выражения str. Эта строка состоит из JavaScript выражений, печатающих в консоль, и, если x равен пяти, призывающих z значение 42, или 0 в противном случае. Когда второе выражение будет исполнено, eval() будет считать выражения выполненными, а также это установит значение выражению переменной z и вернёт его.

    var x = 5;
     var str = "if (x == 5) {console.log('z is 42'); z = 42;} else z = 0; ";
    @@ -141,7 +141,7 @@ console.log("z is ", eval(str));

    Последнее выражение выполняется

    -

    eval() вернет значение последнего выполняемого выражения

    +

    eval() вернёт значение последнего выполняемого выражения

    var str = "if ( a ) { 1+1; } else { 1+2; }";
     var a = true;
    @@ -202,7 +202,7 @@ var fct2 = eval(fctStr2)  // вернёт функцию
     

    Gecko-специфичные замечания

      -
    • Исторически eval() имел второй необязательный аргумент, указывающий на то, в контексте какого объекта будет выполняться выражение. Этот аргумент не был стандартизован и был удален из SpiderMonkey в Gecko 1.9.1 (Firefox 3.5). См. {{bug(442333)}}.
    • +
    • Исторически eval() имел второй необязательный аргумент, указывающий на то, в контексте какого объекта будет выполняться выражение. Этот аргумент не был стандартизован и был удалён из SpiderMonkey в Gecko 1.9.1 (Firefox 3.5). См. {{bug(442333)}}.

    Смотрите также

    diff --git a/files/ru/web/javascript/reference/global_objects/float32array/index.html b/files/ru/web/javascript/reference/global_objects/float32array/index.html index dcd127face..f8fbb0c603 100644 --- a/files/ru/web/javascript/reference/global_objects/float32array/index.html +++ b/files/ru/web/javascript/reference/global_objects/float32array/index.html @@ -185,7 +185,7 @@ var z = new Float32Array(buffer, 0, 4);

    Заметки по совместимости

    -

    Начиная с ECMAScript 2015 (ES6), Float32Array конструктор обязательно должен вызываться с ключевым словом {{jsxref("Operators/new", "new")}}. Вызов Float32Array конструктора как функцию приведет к исключению {{jsxref("TypeError")}}.

    +

    Начиная с ECMAScript 2015 (ES6), Float32Array конструктор обязательно должен вызываться с ключевым словом {{jsxref("Operators/new", "new")}}. Вызов Float32Array конструктора как функцию приведёт к исключению {{jsxref("TypeError")}}.

    var dv = Float32Array([1, 2, 3]);
     // TypeError: calling a builtin Float32Array constructor
    diff --git a/files/ru/web/javascript/reference/global_objects/function/bind/index.html b/files/ru/web/javascript/reference/global_objects/function/bind/index.html
    index d153dc9e5c..78061cd192 100644
    --- a/files/ru/web/javascript/reference/global_objects/function/bind/index.html
    +++ b/files/ru/web/javascript/reference/global_objects/function/bind/index.html
    @@ -32,18 +32,18 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind
     
     

    Описание

    -

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

    +

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

    ПФ имеет следующие внутренние ( скрытые ) свойства:

    • [[BoundTargetFunction]] - оборачиваемый  (целевой ) функциональный объект
    • -
    • [[BoundThis]] - значение, которое всегда передается в качестве значения   this при вызове обернутой функции.
    • +
    • [[BoundThis]] - значение, которое всегда передаётся в качестве значения   this при вызове обёрнутой функции.
    • [[BoundArguments]] - список значений, элементы которого используются в качестве первого аргумента при вызове оборачиваемой функции.
    • [[Call]] - внутренний метод. Выполняет код (функциональное выражение), связанный с функциональным объектом. 
    -

    Когда ПФ вызывается, исполняется ее внутренний метод [[Call]] со следующими аргументами Call(target, boundThis, args).

    +

    Когда ПФ вызывается, исполняется её внутренний метод [[Call]] со следующими аргументами Call(target, boundThis, args).

    • target   -    [[BoundTargetFunction]];
    • @@ -163,7 +163,7 @@ emptyObj.x + ',' + emptyObj.y;

      Пример: создание сокращений

      -

      Метод bind() также полезен в случаях, если вы хотите создать сокращение для функции, требующей определенное значение this.

      +

      Метод bind() также полезен в случаях, если вы хотите создать сокращение для функции, требующей определённое значение this.

      Возьмём, например, метод {{jsxref("Array.prototype.slice")}}, который вы можете использовать для преобразования массивоподобного объекта в настоящий массив. Вы можете создать подобное сокращение:

      diff --git a/files/ru/web/javascript/reference/global_objects/function/index.html b/files/ru/web/javascript/reference/global_objects/function/index.html index 4b6b4f5825..a097213c69 100644 --- a/files/ru/web/javascript/reference/global_objects/function/index.html +++ b/files/ru/web/javascript/reference/global_objects/function/index.html @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Function

      {{JSRef}}

      -

      Function constructor создает новый объект Function. Вызов constructor создает функцию динамически, но страдает от проблем безопасности и аналогичных (но гораздо менее значительных) проблем производительности {{jsxref("eval")}}. Однако, в отличие от eval, конструктор функций создает функции, которые выполняются только в глобальной области..

      +

      Function constructor создаёт новый объект Function. Вызов constructor создаёт функцию динамически, но страдает от проблем безопасности и аналогичных (но гораздо менее значительных) проблем производительности {{jsxref("eval")}}. Однако, в отличие от eval, конструктор функций создаёт функции, которые выполняются только в глобальной области..

      {{EmbedInteractiveExample("pages/js/function-constructor.html")}}

      diff --git a/files/ru/web/javascript/reference/global_objects/function/name/index.html b/files/ru/web/javascript/reference/global_objects/function/name/index.html index 82a59765f2..b421c428a8 100644 --- a/files/ru/web/javascript/reference/global_objects/function/name/index.html +++ b/files/ru/web/javascript/reference/global_objects/function/name/index.html @@ -44,7 +44,7 @@ alert(doSomething.name); // выведет "doSomething"

      Предполагаемые имена функций

      -

      Переменные и методы могут предположить название анонимной функции из ее синтаксической позиции  (new in ECMAScript 2015).

      +

      Переменные и методы могут предположить название анонимной функции из её синтаксической позиции  (new in ECMAScript 2015).

      var f = function() {};
       var object = {
      @@ -79,7 +79,7 @@ alert(object.someMethod.name); //someMethod
       
       

      Для изменения name можно использовать {{jsxref("Object.defineProperty()")}}.

      -

      Сокращенные имена методов

      +

      Сокращённые имена методов

      var o = {
         foo(){}
      @@ -129,7 +129,7 @@ console.log(fooInstance.constructor.name); // logs "Foo"
       }
       
      -

      Со static name() методом Foo.name больше не содержит название класса, но отсылает к функции name(). Приведенное выше определение класса в ES2015 будет вести себя в Chrome и Firefx как в  ES5:

      +

      Со static name() методом Foo.name больше не содержит название класса, но отсылает к функции name(). Приведённое выше определение класса в ES2015 будет вести себя в Chrome и Firefx как в  ES5:

      function Foo() {}
       Object.defineProperty(Foo, 'name', { writable: true });
      @@ -189,7 +189,7 @@ if (b.constructor.name === 'Foo') {
         console.log('Oops!');
       }
      -

      В несжатой версии код выполняется ожидаемо "'foo' is an instance of 'Foo'". В то время, как в сжатой версии он ведет себя иначе. Если вы полагаетесь на Function.name, как в примере, то убедитесь, что pipeline не меняет код или не ожидайте от функции определенного имени.

      +

      В несжатой версии код выполняется ожидаемо "'foo' is an instance of 'Foo'". В то время, как в сжатой версии он ведёт себя иначе. Если вы полагаетесь на Function.name, как в примере, то убедитесь, что pipeline не меняет код или не ожидайте от функции определённого имени.

      diff --git a/files/ru/web/javascript/reference/global_objects/generator/index.html b/files/ru/web/javascript/reference/global_objects/generator/index.html index 8e530ff328..41498f0dfa 100644 --- a/files/ru/web/javascript/reference/global_objects/generator/index.html +++ b/files/ru/web/javascript/reference/global_objects/generator/index.html @@ -40,7 +40,7 @@ console.log(generator().next().value); // 1
      {{jsxref("Generator.prototype.return()")}}
      Возвращает заданное значение и заканчивает генератор.
      {{jsxref("Generator.prototype.throw()")}}
      -
      Выдает ошибку генератора.
      +
      Выдаёт ошибку генератора.

      Пример

      diff --git a/files/ru/web/javascript/reference/global_objects/generator/throw/index.html b/files/ru/web/javascript/reference/global_objects/generator/throw/index.html index cfdf5d3bbc..77b096e858 100644 --- a/files/ru/web/javascript/reference/global_objects/generator/throw/index.html +++ b/files/ru/web/javascript/reference/global_objects/generator/throw/index.html @@ -26,11 +26,11 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw
    • done (boolean)
        -
      • Имеет значение true если iterator прошел конец итерируемой последовательности. В этом случае value опционально определяется выражением return value внутри итератора .
      • +
      • Имеет значение true если iterator прошёл конец итерируемой последовательности. В этом случае value опционально определяется выражением return value внутри итератора .
      • Имеет значение false если iterator имеет возможность вернуть следующее значение последовательности. Это равносильно когда свойство done не указано.
    • -
    • value - любое JavaScript значение,  возвращенное итератором. Может быть проигнорировано, когда done === true.
    • +
    • value - любое JavaScript значение,  возвращённое итератором. Может быть проигнорировано, когда done === true.
    • Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html b/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html index 4cce9504e9..56264cb71d 100644 --- a/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html +++ b/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction ---
      {{JSRef}}
      -

      GeneratorFunction constructor создает новый {{jsxref("Statements/function*", "generator function")}} объект. В JavaScript каждая функция-генератор - это фактически GeneratorFunction объект.

      +

      GeneratorFunction constructor создаёт новый {{jsxref("Statements/function*", "generator function")}} объект. В JavaScript каждая функция-генератор - это фактически GeneratorFunction объект.

      Обратите внимание, что GeneratorFunction - это не глобальный объект. Он может быть получен при выполнении следующего кода.

      @@ -20,7 +20,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction
      arg1, arg2, ... argN
      -
      Имена, используемые функцией как имена формальных аргументов. Каждый должен быть строкой, которая соответствует правильному JavaScript идентификатору или списком таких строк, разделенных запятыми; например "x", "theValue", или "a,b".
      +
      Имена, используемые функцией как имена формальных аргументов. Каждый должен быть строкой, которая соответствует правильному JavaScript идентификатору или списком таких строк, разделённых запятыми; например "x", "theValue", или "a,b".
      functionBody
      A string containing the JavaScript statements comprising the function definition.
      diff --git a/files/ru/web/javascript/reference/global_objects/globalthis/index.html b/files/ru/web/javascript/reference/global_objects/globalthis/index.html index ce4cb48419..0f12223b46 100644 --- a/files/ru/web/javascript/reference/global_objects/globalthis/index.html +++ b/files/ru/web/javascript/reference/global_objects/globalthis/index.html @@ -83,6 +83,6 @@ if (typeof globals.setTimeout !== 'function') {

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

      -

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

      +

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

      {{EmbedTest262ReportResultsTable("globalThis")}}

      diff --git a/files/ru/web/javascript/reference/global_objects/intl/index.html b/files/ru/web/javascript/reference/global_objects/intl/index.html index 4316488c58..cb0df3d472 100644 --- a/files/ru/web/javascript/reference/global_objects/intl/index.html +++ b/files/ru/web/javascript/reference/global_objects/intl/index.html @@ -47,7 +47,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Intl
    • "zh-Hans-CN": упрощённый китайский, используемый в Китае.
    • -

      Подметки, определяющие языки, письменности, страны (регионы) и (используется не часто) варианты в языковых метках BCP 47 могут быть найдены в Реестре языковых подметок IANA.

      +

      Подмётки, определяющие языки, письменности, страны (регионы) и (используется не часто) варианты в языковых метках BCP 47 могут быть найдены в Реестре языковых подмёток IANA.

      BCP 47 также позволяет использовать расширения, и одно из них имеет значение для функций интернационализации JavaScript: это расширение "u" (Unicode). Оно может использоваться для запрашивания настраиваемого языка-зависимого поведения объектов {{jsxref("Global_Objects/Collator", "Collator")}}, {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} или {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}. Примеры:

      diff --git a/files/ru/web/javascript/reference/global_objects/isfinite/index.html b/files/ru/web/javascript/reference/global_objects/isfinite/index.html index eb1c6ee465..dcce428701 100644 --- a/files/ru/web/javascript/reference/global_objects/isfinite/index.html +++ b/files/ru/web/javascript/reference/global_objects/isfinite/index.html @@ -46,7 +46,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/isFinite

      isFinite это функция верхнего уровня и она не связана ни с одним объектом.

      -

      Вы можете использовать эту функцию там, где требуется определить, является ли аргумент конечным числом. Функция isFinite исследует число в своем параметре. Если аргумент является NaN, положительной или отрицательной бесконечностью, метод вернет false; иначе возвращается true.

      +

      Вы можете использовать эту функцию там, где требуется определить, является ли аргумент конечным числом. Функция isFinite исследует число в своём параметре. Если аргумент является NaN, положительной или отрицательной бесконечностью, метод вернёт false; иначе возвращается true.

      Примеры

      @@ -59,7 +59,7 @@ isFinite(2e64); // true isFinite("0"); // true, но было бы false если использовать - // более надежный вариант Number.isFinite("0") + // более надёжный вариант Number.isFinite("0")

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

      diff --git a/files/ru/web/javascript/reference/global_objects/map/delete/index.html b/files/ru/web/javascript/reference/global_objects/map/delete/index.html index f9e6cb1cf4..dfa69f8edb 100644 --- a/files/ru/web/javascript/reference/global_objects/map/delete/index.html +++ b/files/ru/web/javascript/reference/global_objects/map/delete/index.html @@ -31,7 +31,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete

      Возвращаемое значение

      -

      true если элемент существовал в {{jsxref("Map")}} и он был удален или false если элемента с таким ключом не было.

      +

      true если элемент существовал в {{jsxref("Map")}} и он был удалён или false если элемента с таким ключом не было.

      Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/map/entries/index.html b/files/ru/web/javascript/reference/global_objects/map/entries/index.html index ccdd07a182..eb1a79956b 100644 --- a/files/ru/web/javascript/reference/global_objects/map/entries/index.html +++ b/files/ru/web/javascript/reference/global_objects/map/entries/index.html @@ -7,7 +7,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries

      Метод entries() возвращает новый Итератор, содержащий пары [key, value] для каждого элемента объекта {{jsxref("Map")}} в том порядке, в котором они были заведены.

      -

      Исходный код всех примеров для  {{jsxref("Map")}} сохранен на GitHub https://github.com/mdn/interactive-examples/tree/master/live-examples/js-examples/map.

      +

      Исходный код всех примеров для  {{jsxref("Map")}} сохранён на GitHub https://github.com/mdn/interactive-examples/tree/master/live-examples/js-examples/map.

      Вы можете внести свой вклад, для этого: 

      diff --git a/files/ru/web/javascript/reference/global_objects/map/foreach/index.html b/files/ru/web/javascript/reference/global_objects/map/foreach/index.html index 20111c1cdc..27b5c25aa0 100644 --- a/files/ru/web/javascript/reference/global_objects/map/foreach/index.html +++ b/files/ru/web/javascript/reference/global_objects/map/foreach/index.html @@ -40,7 +40,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach

      Если аргумент thisArg указан для forEach, то при вызове callback он будет передан в качестве значения this.  В противном случае для this будет передано undefined. Значение this, в конечном итоге наблюдаемое в функции callback, определяется в соответствии c обычными правилами определения this в функции.

      -

      Каждое значение посещается один раз, за исключением случая, когда оно было удалено и добавлено снова до завершения forEach. callback не вызывается для значений, удаленных до их посещения. Новые значения будут посещены, если они добавлены до завершения forEach.

      +

      Каждое значение посещается один раз, за исключением случая, когда оно было удалено и добавлено снова до завершения forEach. callback не вызывается для значений, удалённых до их посещения. Новые значения будут посещены, если они добавлены до завершения forEach.

      forEach исполняет функцию callback один раз для каждого элемента в объекте Map; не возвращает значение.

      diff --git a/files/ru/web/javascript/reference/global_objects/map/get/index.html b/files/ru/web/javascript/reference/global_objects/map/get/index.html index ae4ca29646..be837c802e 100644 --- a/files/ru/web/javascript/reference/global_objects/map/get/index.html +++ b/files/ru/web/javascript/reference/global_objects/map/get/index.html @@ -29,8 +29,8 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Map/get
      var myMap = new Map();
       myMap.set('bar', 'foo');
       
      -myMap.get('bar');  // Вернет "foo".
      -myMap.get('baz');  // Вернет undefined.
      +myMap.get('bar');  // Вернёт "foo".
      +myMap.get('baz');  // Вернёт undefined.
       

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

      diff --git a/files/ru/web/javascript/reference/global_objects/map/index.html b/files/ru/web/javascript/reference/global_objects/map/index.html index 4548a2f79a..fe13de74df 100644 --- a/files/ru/web/javascript/reference/global_objects/map/index.html +++ b/files/ru/web/javascript/reference/global_objects/map/index.html @@ -32,7 +32,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Map

      Сравнение Объектов и Map

      -

      Объекты похожи на Map в том, что оба позволяют устанавливать значения по ключам, получать эти значения, удалять ключи и проверять их наличие. В связи с этим (и потому, что не было встроенных альтернатив), {{jsxref("Object", "Объекты")}} исторически использовались как Map. Однако, у них есть ряд отличий, который дает преимущества Map в ряде случаев:

      +

      Объекты похожи на Map в том, что оба позволяют устанавливать значения по ключам, получать эти значения, удалять ключи и проверять их наличие. В связи с этим (и потому, что не было встроенных альтернатив), {{jsxref("Object", "Объекты")}} исторически использовались как Map. Однако, у них есть ряд отличий, который даёт преимущества Map в ряде случаев:

      • Ключами {{jsxref("Object", "Объекта")}} выступают {{jsxref("String", "Строки")}} и {{jsxref("Symbol", "Символы")}}, в то время как любое значение может быть ключом Map, включая {{jsxref("Function", "функции")}}, {{jsxref("Object", "объекты")}} и {{Glossary("Primitive", "примитивы")}}.
      • @@ -74,7 +74,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Map
        Map.prototype.clear()
        Удаляет все пары ключ / значение из объекта Map.
        Map.prototype.delete(key)
        -
        Возвращает true, если элемент в объекте Map существовал и был удален, или false, если элемент не существует. Map.prototype.has(key) вернет false позже.
        +
        Возвращает true, если элемент в объекте Map существовал и был удалён, или false, если элемент не существует. Map.prototype.has(key) вернёт false позже.
        Map.prototype.entries()
        Возвращает новый объект Iterator который содержит массив [key, value] для каждого элемента в объекте Map в порядке вставки.
        Map.prototype.forEach(callbackFn[, thisArg])
        diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html index 28d145db02..9fd81b98cd 100644 --- a/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html @@ -29,7 +29,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt

        Возвращаемое значение

        -

        Квадратный корень заданного числа. Если число отрицательное, то вернется {{jsxref("NaN")}}.

        +

        Квадратный корень заданного числа. Если число отрицательное, то вернётся {{jsxref("NaN")}}.

        Описание

        diff --git a/files/ru/web/javascript/reference/global_objects/nan/index.html b/files/ru/web/javascript/reference/global_objects/nan/index.html index 7c91aebb62..ca61ca7c3e 100644 --- a/files/ru/web/javascript/reference/global_objects/nan/index.html +++ b/files/ru/web/javascript/reference/global_objects/nan/index.html @@ -45,7 +45,7 @@ valueIsNaN(1); // false valueIsNaN(NaN); // true valueIsNaN(Number.NaN); // true -

        Тем не менее, обратите внимание на разницу между функцией isNaN() и методом Number.isNaN(): первая вернет true, если значение в настоящий момент является NaN, или если оно станет NaN после того, как преобразуется в число, в то время как последний вернет true, только если текущим значением является NaN:

        +

        Тем не менее, обратите внимание на разницу между функцией isNaN() и методом Number.isNaN(): первая вернёт true, если значение в настоящий момент является NaN, или если оно станет NaN после того, как преобразуется в число, в то время как последний вернёт true, только если текущим значением является NaN:

        isNaN('hello world');        // true
         Number.isNaN('hello world'); // false
        diff --git a/files/ru/web/javascript/reference/global_objects/null/index.html b/files/ru/web/javascript/reference/global_objects/null/index.html index 085018dc12..22f65596e9 100644 --- a/files/ru/web/javascript/reference/global_objects/null/index.html +++ b/files/ru/web/javascript/reference/global_objects/null/index.html @@ -40,14 +40,14 @@ translation_of: Web/JavaScript/Reference/Global_Objects/null

        Отличия между null и undefined

        -

        null является определенным значением отсутствия объекта, тогда как {{jsxref("Global_Objects/undefined", "undefined")}} обозначает неопределенность. Например: 

        +

        null является определённым значением отсутствия объекта, тогда как {{jsxref("Global_Objects/undefined", "undefined")}} обозначает неопределённость. Например: 

        var element;
        -// значение переменной element до ее инициализации не определенно: undefined
        +// значение переменной element до её инициализации не определённо: undefined
         
         element = document.getElementById('not-exists');
         // здесь при попытке получения несуществующего элемента, метод getElementById возвращает null
        -// переменная element теперь инициализирована значением null, ее значение определено
        +// переменная element теперь инициализирована значением null, её значение определено
         

        При проверке на null или {{jsxref("Global_Objects/undefined", "undefined")}}, помните о различии между операторами равенства (==) и идентичности (===): с первым, выполняется преобразование типов. 

        diff --git a/files/ru/web/javascript/reference/global_objects/object/create/index.html b/files/ru/web/javascript/reference/global_objects/object/create/index.html index bb1da1642e..9af356adc0 100644 --- a/files/ru/web/javascript/reference/global_objects/object/create/index.html +++ b/files/ru/web/javascript/reference/global_objects/object/create/index.html @@ -34,7 +34,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Object/create

        Выбрасываемые исключения

        -

        Выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}, если параметр proto не является {{jsxref("Global_Objects/null", "null")}} или объектом (исключение составляют объекты-обертки примитивных типов).

        +

        Выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}, если параметр proto не является {{jsxref("Global_Objects/null", "null")}} или объектом (исключение составляют объекты-обёртки примитивных типов).

        Примеры

        @@ -170,7 +170,7 @@ o2 = Object.create({}, {   var hasOwn = Object.prototype.hasOwnProperty; return function (O) { -  // 1. Если Type(O) не является Object or Null выдается исключение TypeError. +  // 1. Если Type(O) не является Object or Null выдаётся исключение TypeError. if (typeof O != 'object') { throw TypeError('Object prototype may only be an Object or null'); } @@ -183,7 +183,7 @@ o2 = Object.create({}, { var obj = new Temp(); Temp.prototype = null; // Давайте не будем держать случайные ссылки на О... -  // 4.  Если аргумент Properties присутствует и не определен, добавляем +  // 4.  Если аргумент Properties присутствует и не определён, добавляем   // собственные свойства к obj, как будто вызывая стандартную встроенную   // функцию Object.defineProperties с аргументами obj и   // Properties. diff --git a/files/ru/web/javascript/reference/global_objects/object/entries/index.html b/files/ru/web/javascript/reference/global_objects/object/entries/index.html index 87a9de90b8..7487e1241a 100644 --- a/files/ru/web/javascript/reference/global_objects/object/entries/index.html +++ b/files/ru/web/javascript/reference/global_objects/object/entries/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries ---
        {{JSRef}}
        -

        Object.entries() метод возвращает массив собственных перечисляемых свойств указанного объекта в формате [key, value], в том же порядке, что и в цикле {{jsxref("Statements/for...in", "for...in")}} (разница в том, что for-in перечисляет свойства из цепочки прототипов). Порядок элементов в массиве который возвращается Object.entries() не зависит от того как объект объявлен. Если существует необходимость в определенном порядке, то  массив должен быть отсортирован до вызова метода, например Object.entries(obj).sort((a, b) => a[0] - b[0]);.

        +

        Object.entries() метод возвращает массив собственных перечисляемых свойств указанного объекта в формате [key, value], в том же порядке, что и в цикле {{jsxref("Statements/for...in", "for...in")}} (разница в том, что for-in перечисляет свойства из цепочки прототипов). Порядок элементов в массиве который возвращается Object.entries() не зависит от того как объект объявлен. Если существует необходимость в определённом порядке, то  массив должен быть отсортирован до вызова метода, например Object.entries(obj).sort((a, b) => a[0] - b[0]);.

        {{EmbedInteractiveExample("pages/js/object-entries.html")}}

        diff --git a/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html b/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html index 7bf1d17719..0a52348cb4 100644 --- a/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html +++ b/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html @@ -33,7 +33,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries

        Описание

        -

        Метод Object.fromEntries() принимает список пар ключ-значение и возвращает новый объект, свойства которого задаются этими записями. Ожидается, что аргумент iterable будет объектом, который реализует метод @@iterator, который возвращает объект итератора, который создает двухэлементный массивоподобный объект, первый элемент которого является значением, которое будет использоваться в качестве ключа свойства, а второй элемент — значением связанного с этим ключом свойства.

        +

        Метод Object.fromEntries() принимает список пар ключ-значение и возвращает новый объект, свойства которого задаются этими записями. Ожидается, что аргумент iterable будет объектом, который реализует метод @@iterator, который возвращает объект итератора, который создаёт двухэлементный массивоподобный объект, первый элемент которого является значением, которое будет использоваться в качестве ключа свойства, а второй элемент — значением связанного с этим ключом свойства.

        Object.fromEntries() выполняет процедуру, обратную {{jsxref("Object.entries()")}}.

        diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html index 1700aa0e2c..62830748df 100644 --- a/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html @@ -40,7 +40,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDes
        set
        Функция, которая служит установщиком для свойства, или {{jsxref("undefined")}} если установщика нет (только дескрипторы доступа).
        configurable
        -
        true тогда и только тогда, когда тип этого свойства дескриптора может быть изменен, и если свойство может быть удалено из соответствующего объекта.
        +
        true тогда и только тогда, когда тип этого свойства дескриптора может быть изменён, и если свойство может быть удалено из соответствующего объекта.
        enumerable
        true тогда и только тогда, когда это свойство отображается при перечислении свойств соответствующего объекта.

         

        diff --git a/files/ru/web/javascript/reference/global_objects/object/values/index.html b/files/ru/web/javascript/reference/global_objects/object/values/index.html index 38bfcb624a..112c18c60f 100644 --- a/files/ru/web/javascript/reference/global_objects/object/values/index.html +++ b/files/ru/web/javascript/reference/global_objects/object/values/index.html @@ -52,7 +52,7 @@ var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; my_obj.foo = "bar"; console.log(Object.values(my_obj)); // ['bar'] -// Аргумент, не являющийся объектом, будет приведен к объекту +// Аргумент, не являющийся объектом, будет приведён к объекту console.log(Object.values("foo")); // ['f', 'o', 'o'] diff --git a/files/ru/web/javascript/reference/global_objects/parsefloat/index.html b/files/ru/web/javascript/reference/global_objects/parsefloat/index.html index 03cb0bc158..e108d37e8d 100644 --- a/files/ru/web/javascript/reference/global_objects/parsefloat/index.html +++ b/files/ru/web/javascript/reference/global_objects/parsefloat/index.html @@ -44,11 +44,11 @@ translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat

        parseFloat - это высокоуровневая функция, не привязанная ни к одному объекту.

        -

        parseFloat разбирает текстовую строку, ищет и возвращает из нее десятичное число. Если функция встретит знак, отличный от (+ или -), цифр(0-9), разделительной точки, или показателя степени, она вернет значение, предшествующее этому знаку, игнорируя все последующие символы . Допускаются позади и впереди идущие пробелы.

        +

        parseFloat разбирает текстовую строку, ищет и возвращает из неё десятичное число. Если функция встретит знак, отличный от (+ или -), цифр(0-9), разделительной точки, или показателя степени, она вернёт значение, предшествующее этому знаку, игнорируя все последующие символы . Допускаются позади и впереди идущие пробелы.

        -

        Если первый символ нельзя привести к числовому виду, parseFloat вернет NaN.

        +

        Если первый символ нельзя привести к числовому виду, parseFloat вернёт NaN.

        -

        С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернет ли parseFloat значение {{jsxref("NaN")}} в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если NaN участвует в арифметических операциях, результатом также будет NaN.

        +

        С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернёт ли parseFloat значение {{jsxref("NaN")}} в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если NaN участвует в арифметических операциях, результатом также будет NaN.

        parseFloat также может вернуть значение Infinity ("бесконечность"). Вы можете использовать функцию {{jsxref("Global_Objects/isFinite", "isFinite")}}, чтобы определить, является ли результат конечным числом  (not Infinity, -Infinity, или NaN).

        @@ -76,7 +76,7 @@ parseFloat(foo);​​​​​

        parseFloat возвращает NaN

        -

        Пример ниже вернет NaN

        +

        Пример ниже вернёт NaN

        parseFloat("FF2");
         
        diff --git a/files/ru/web/javascript/reference/global_objects/parseint/index.html b/files/ru/web/javascript/reference/global_objects/parseint/index.html index 093ad5971c..fd1942b04d 100644 --- a/files/ru/web/javascript/reference/global_objects/parseint/index.html +++ b/files/ru/web/javascript/reference/global_objects/parseint/index.html @@ -54,13 +54,13 @@ translation_of: Web/JavaScript/Reference/Global_Objects/parseInt
        • Если значение входного параметра string начинается с "0x" или "0X", за основание системы счисления принимается 16, и интерпретации подвергается оставшаяся часть строки.
        • -
        • Если значение входного параметра string начинается с "0", за основание системы счисления принимается либо 8, либо 10, в зависимости от конкретной реализации. В спецификации ECMAScript 5 прописано использование 10 (десятичная система), но это поддерживается еще не всеми браузерами, поэтому необходимо всегда указывать основание системы счисления при использовании функции parseInt.
        • +
        • Если значение входного параметра string начинается с "0", за основание системы счисления принимается либо 8, либо 10, в зависимости от конкретной реализации. В спецификации ECMAScript 5 прописано использование 10 (десятичная система), но это поддерживается ещё не всеми браузерами, поэтому необходимо всегда указывать основание системы счисления при использовании функции parseInt.
        • Если значение входного параметра string начинается с любого другого символа, система счисления считается десятичной (основание 10).

        Если первый символ строки не может быть преобразован в число, parseInt возвращает значение NaN.

        -

        С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернет ли parseInt значение NaN в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если NaN участвует в арифметических операциях, результатом также будет NaN.

        +

        С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернёт ли parseInt значение NaN в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если NaN участвует в арифметических операциях, результатом также будет NaN.

        Для преобразования числа в строку в указанной системе счисления, используйте intValue.toString(radix).

        diff --git a/files/ru/web/javascript/reference/global_objects/promise/all/index.html b/files/ru/web/javascript/reference/global_objects/promise/all/index.html index b6291344c2..4a79cf71ab 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/all/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/all/index.html @@ -27,19 +27,19 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all

        Возвращаемое значение

        -

        {{jsxref("Promise")}}, который будет выполнен когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонен, если будет отклонено хоть одно из переданных обещаний.

        +

        {{jsxref("Promise")}}, который будет выполнен когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонён, если будет отклонено хоть одно из переданных обещаний.

        Описание

        Promise.all возвращает массив значений от всех обещаний, которые были ему переданы. Возвращаемый массив значений сохраняет порядок оригинального перечисляемого объекта, но не порядок выполнения обещаний. Если какой-либо элемент перечисляемого объекта не является обещанием, то он будет преобразован с помощью метода {{jsxref("Promise.resolve")}}.

        -

        Если одно из переданных обещаний будет отклонено, Promise.all будет немедленно отклонен со значением отклоненного обещания, не учитывая другие обещания, независимо выполнены они или нет. Если в качестве аргумента будет передан пустой массив, то Promise.all будет выполнен немедленно

        +

        Если одно из переданных обещаний будет отклонено, Promise.all будет немедленно отклонён со значением отклонённого обещания, не учитывая другие обещания, независимо выполнены они или нет. Если в качестве аргумента будет передан пустой массив, то Promise.all будет выполнен немедленно

        Примеры

        Использование Promise.all

        -

        Promise.all ждет выполнения всех обещаний (или первого метода reject()).

        +

        Promise.all ждёт выполнения всех обещаний (или первого метода reject()).

        var p1 = Promise.resolve(3);
         var p2 = 1337;
        @@ -57,7 +57,7 @@ Promise.all([p1, p2, p3]).then(values => {
         
         

        Promise.all поведение немедленного отклонения

        -

        Promise.all будет немедленно отклонен если одно из переданных обещаний будет отклонено: если у вас есть четыре обещания которые будут выполнены с задержкой и одно, которое будет отклонено немедленно - тогда Promise.all будет немедленно отклонен.

        +

        Promise.all будет немедленно отклонён если одно из переданных обещаний будет отклонено: если у вас есть четыре обещания которые будут выполнены с задержкой и одно, которое будет отклонено немедленно - тогда Promise.all будет немедленно отклонен.

        var p1 = new Promise((resolve, reject) => {
           setTimeout(resolve, 1000, "one");
        @@ -72,7 +72,7 @@ var p4 = new Promise((resolve, reject) => {
           setTimeout(resolve, 4000, "four");
         });
         var p5 = new Promise((resolve, reject) => {
        -// Это обещание прервет Promise.all
        +// Это обещание прервёт Promise.all
           reject("reject");
         });
         
        diff --git a/files/ru/web/javascript/reference/global_objects/promise/any/index.html b/files/ru/web/javascript/reference/global_objects/promise/any/index.html
        index 339d9f7aad..fc85e0927c 100644
        --- a/files/ru/web/javascript/reference/global_objects/promise/any/index.html
        +++ b/files/ru/web/javascript/reference/global_objects/promise/any/index.html
        @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any
         ---
         
        {{JSRef}}
        -

        Метод Promise.any() принимает итерируемый объект содержащий объекты "обещаний" {{JSxRef("Promise")}}. Как только одно из "обещаний"(Promise) выполнится успешно(fullfill), метод возвратит единственный объект Promise со значением выполненного "обещания". Если ни одно из "обещаний" не завершится успешно(если все "обещания" завершатся с ошибкой, т.е. rejected), тогда возвращенный объект promise будет отклонен(rejected) с одним из значений: массив содержащий причины ошибки(отклонения), или {{JSxRef("AggregateError")}} — подкласс {{JSxRef("Error")}}, который объединяет выброшенные ошибки вместе. По существу, метод Promise.any() является противоположностью для {{JSxRef("Promise.all()")}}.

        +

        Метод Promise.any() принимает итерируемый объект содержащий объекты "обещаний" {{JSxRef("Promise")}}. Как только одно из "обещаний"(Promise) выполнится успешно(fullfill), метод возвратит единственный объект Promise со значением выполненного "обещания". Если ни одно из "обещаний" не завершится успешно(если все "обещания" завершатся с ошибкой, т.е. rejected), тогда возвращённый объект promise будет отклонён(rejected) с одним из значений: массив содержащий причины ошибки(отклонения), или {{JSxRef("AggregateError")}} — подкласс {{JSxRef("Error")}}, который объединяет выброшенные ошибки вместе. По существу, метод Promise.any() является противоположностью для {{JSxRef("Promise.all()")}}.

        Warning! The Promise.any() method is experimental and not fully supported by all browsers. It is currently in the TC39 Candidate stage (Stage 3).

        @@ -27,25 +27,25 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any
        • Исполненный {{JSxRef("Promise")}}, если переданный итерируемый объект пуст.
        • Исполненный асинхронно {{JSxRef("Promise")}}, если переданный итерируемый объект не содержит "обещаний"(promises).
        • -
        • Во всех других случаях {{JSxRef("Promise")}} со статусом ожидания(pending). Возвращенное "обещание" будет исполнено(resolved/rejected) асинхронно (как только стэк вызовов окажется пустым), когда одно(любое) "обещание" из  переданного итерируемого объекта исполнится, либо все "обещания" будут отклонены.
        • +
        • Во всех других случаях {{JSxRef("Promise")}} со статусом ожидания(pending). Возвращённое "обещание" будет исполнено(resolved/rejected) асинхронно (как только стэк вызовов окажется пустым), когда одно(любое) "обещание" из  переданного итерируемого объекта исполнится, либо все "обещания" будут отклонены.

        Описание

        -

        Метод полезен, когда нужно вернуть первое исполненное "обещание". После того как одно из "обещаний" будет исполнено, метод не будет дожидаться исполнения остальных. В отличие от {{JSxRef("Promise.all()")}}, который содержит массив(Array) значений исполненных обещаний, Promise.any() содержит только одно значение (при условии, что хотя бы одно из "обещаний" исполнено успешно). Такой подход может быть выгодным, когда нужно, чтобы выполнилось только одно "обещание", неважно какое. Также, в отличие от {{JSxRef("Promise.race()")}}, который возвращает "обещание", содержащее значение первого завершенного(resolved или rejected), этот метод возвращает "обещание" содержащее значение первого успешно выполненного(resolved) "обещания". Метод будет игнорировать исполнение обещаний с ошибкой(rejection) вплоть до первого исполненного успешно(fullfilment).

        +

        Метод полезен, когда нужно вернуть первое исполненное "обещание". После того как одно из "обещаний" будет исполнено, метод не будет дожидаться исполнения остальных. В отличие от {{JSxRef("Promise.all()")}}, который содержит массив(Array) значений исполненных обещаний, Promise.any() содержит только одно значение (при условии, что хотя бы одно из "обещаний" исполнено успешно). Такой подход может быть выгодным, когда нужно, чтобы выполнилось только одно "обещание", неважно какое. Также, в отличие от {{JSxRef("Promise.race()")}}, который возвращает "обещание", содержащее значение первого завершённого(resolved или rejected), этот метод возвращает "обещание" содержащее значение первого успешно выполненного(resolved) "обещания". Метод будет игнорировать исполнение обещаний с ошибкой(rejection) вплоть до первого исполненного успешно(fullfilment).

        Успешное исполнение(Fullfilment)

        -

        Если одно из "обещаний" исполнится успешно, возвращенное "обещание" асинхронно исполнится успешно со значением выполненного "обещания", независимо от завершения остальных "обещаний".

        +

        Если одно из "обещаний" исполнится успешно, возвращённое "обещание" асинхронно исполнится успешно со значением выполненного "обещания", независимо от завершения остальных "обещаний".

        • Если передан пустой итерируемый объект, тогда метод возвращает (синхронно) выполненное "обещание".
        • -
        • Если одно из переданных обещаний исполнится успешно, или в переданном итерируемом объекте не содержится "обещаний", "обещание" возвращенное из метода Promise.any асинхронно исполнится успешно.
        • +
        • Если одно из переданных обещаний исполнится успешно, или в переданном итерируемом объекте не содержится "обещаний", "обещание" возвращённое из метода Promise.any асинхронно исполнится успешно.

        Исполнение с ошибкой(Rejection)

        -

        Если все переданные "обещания" будут отклонены(rejected), Promise.any асинхронно будет отклонено в одном из двух вариантов (которые еще не были согласованы): либо

        +

        Если все переданные "обещания" будут отклонены(rejected), Promise.any асинхронно будет отклонено в одном из двух вариантов (которые ещё не были согласованы): либо

        • Массив(Array) содержащий причины отклонения всех "обещаний" переданных в итерируемом объекте, либо
        • diff --git a/files/ru/web/javascript/reference/global_objects/promise/catch/index.html b/files/ru/web/javascript/reference/global_objects/promise/catch/index.html index 91d7970796..3515b9c63c 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/catch/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/catch/index.html @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch ---
          {{JSRef}}
          -

          Метод catch() возвращает Promise(обещание) и работает только в случае отклонения обещания. Ведет себя аналогично вызову {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}}.

          +

          Метод catch() возвращает Promise(обещание) и работает только в случае отклонения обещания. Ведёт себя аналогично вызову {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}}.

          Syntax

          @@ -31,7 +31,7 @@ p.catch(function(reason) {
          reason
          Причина отказа.
          -

          Promise( Обещание ), возвращенное catch (), отклоняется, если onRejected выдает ошибку(throw) или возвращает Promise, который был отклонен; В противном случае Promise, возвращаемый catch () имеет статус  выполнено  (fulfilled)

          +

          Promise( Обещание ), возвращённое catch (), отклоняется, если onRejected выдаёт ошибку(throw) или возвращает Promise, который был отклонён; В противном случае Promise, возвращаемый catch () имеет статус  выполнено  (fulfilled)

        @@ -72,7 +72,7 @@ p1.then(function(value) {   console.log('Not fired due to the catch'); }); -// Следующий код ведет себя также, как вышенаписанный +// Следующий код ведёт себя также, как вышенаписанный p1.then(function(value) {   console.log(value); // "Success!" return Promise.reject('oh, no!'); diff --git a/files/ru/web/javascript/reference/global_objects/promise/finally/index.html b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html index b1a53051fa..c12f7625a0 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/finally/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally ---
        {{JSRef}}
        -

        Метод finally() возвращает {{jsxref("Promise")}}. Когда Promise (обещание) был выполнен, в не зависимости успешно или с ошибкой, указанная функция будет выполнена. Это дает возможность запустить один раз определенный участок кода, который должен выполниться вне зависимости от того, с каким результатом выполнился Promise.

        +

        Метод finally() возвращает {{jsxref("Promise")}}. Когда Promise (обещание) был выполнен, в не зависимости успешно или с ошибкой, указанная функция будет выполнена. Это даёт возможность запустить один раз определённый участок кода, который должен выполниться вне зависимости от того, с каким результатом выполнился Promise.

        Это позволяет вам избавиться от дубликации кода в обработчиках {{jsxref("Promise.then", "then()")}} и {{jsxref("Promise.catch", "catch()")}}.

        @@ -14,11 +14,11 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally
        p.finally(onFinally);
         
         p.finally(function() {
        -   // завершен (успешно или с ошибкой)
        +   // завершён (успешно или с ошибкой)
         });
         
         p.finally(() => {
        -// завершен (успешно или с ошибкой)
        +// завершён (успешно или с ошибкой)
         });

        Параметры

        @@ -40,7 +40,7 @@ p.finally(() => {
        • Использование finally() позволяет избежать двойного объявления одной и той же функции или создания переменной. 
        • -
        • finally не получает аргументов, так как не существует способа определить, будет ли обещание выполнено успешно или с ошибкой. Данный метод необходимо использовать, если не важна причина ошибки или результат успешного выполнения и, следовательно, нет необходимости ее/его передавать.
        • +
        • finally не получает аргументов, так как не существует способа определить, будет ли обещание выполнено успешно или с ошибкой. Данный метод необходимо использовать, если не важна причина ошибки или результат успешного выполнения и, следовательно, нет необходимости её/его передавать.
        • В отличие от Promise.resolve(2).then(() => {}, () => {}) (результатом которого будет resolved-промис, со значением undefined), результатом Promise.resolve(2).finally(() => {}) будет resolved-промис со значением 2.
        • Аналогично, в отличии от Promise.reject(3).then(() => {}, () => {}) (результатом которого будет resolved-промис, со значением undefined), результатом Promise.reject(3).finally(() => {}) будет rejected-промис со значением 3.
        diff --git a/files/ru/web/javascript/reference/global_objects/promise/index.html b/files/ru/web/javascript/reference/global_objects/promise/index.html index f5701b4694..7410136177 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/index.html @@ -29,13 +29,13 @@ new Promise(function(resolve, reject) { ... });
        executor
        -
        Объект функции с двумя аргументами resolve и reject. Функция executor  получает оба аргумента и выполняется сразу, еще до того как конструктор вернет созданный объект. Первый аргумент (resolve) вызывает успешное исполнение промиса, второй (reject) отклоняет его.
        +
        Объект функции с двумя аргументами resolve и reject. Функция executor  получает оба аргумента и выполняется сразу, ещё до того как конструктор вернёт созданный объект. Первый аргумент (resolve) вызывает успешное исполнение промиса, второй (reject) отклоняет его.
        Обычно функция executor описывает выполнение какой-то асинхронной работы, по завершении которой необходимо вызвать функцию resolve или reject. Обратите внимание, что возвращаемое значение функции executor игнорируется.

        Описание

        -

        Интерфейс Promise (промис) представляет собой обертку для значения, неизвестного на момент создания промиса. Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными: вместо конечного результата асинхронного метода возвращается обещание (промис) получить результат в некоторый момент в будущем.

        +

        Интерфейс Promise (промис) представляет собой обёртку для значения, неизвестного на момент создания промиса. Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными: вместо конечного результата асинхронного метода возвращается обещание (промис) получить результат в некоторый момент в будущем.

        Promise может находиться в трёх состояниях:

        @@ -45,14 +45,14 @@ new Promise(function(resolve, reject) { ... });
      • отклонено (rejected): операция завершена с ошибкой.
      -

      При создании промис находится в ожидании (pending), а затем может стать исполненным  (fulfilled), вернув полученный результат (значение), или отклоненным (rejected), вернув причину отказа. В любом из этих случаев вызывается обработчик, прикрепленный к промису методом then. (Если в момент назначения обработчика промис уже исполнен или отклонен, обработчик все равно будет вызван, т.е. асинхронное исполнение промиса и назначение обработчика не будет происходить в «состоянии гонки», как, например, в случае с событиями в DOM.)

      +

      При создании промис находится в ожидании (pending), а затем может стать исполненным  (fulfilled), вернув полученный результат (значение), или отклонённым (rejected), вернув причину отказа. В любом из этих случаев вызывается обработчик, прикреплённый к промису методом then. (Если в момент назначения обработчика промис уже исполнен или отклонён, обработчик все равно будет вызван, т.е. асинхронное исполнение промиса и назначение обработчика не будет происходить в «состоянии гонки», как, например, в случае с событиями в DOM.)

      Так как методы {{JSxRef("Promise.then", "Promise.prototype.then()")}} и {{JSxRef("Promise.catch", "Promise.prototype.catch()")}} сами возвращают промис, их можно вызывать цепочкой, создавая соединения.

      -

      Примечание: говорят, что промис находится в состоянии завершен (settled) когда он или исполнен или отклонен, т.е. в любом состоянии, кроме ожидания (это лишь форма речи, не являющаяся настоящим состоянием промиса). Также можно встретить термин исполин (resolved) — это значит что промис завершен или "заблокирован" в ожидании завершения другого промиса. В статье состояния и fates приводится более подробное описание терминологии.

      +

      Примечание: говорят, что промис находится в состоянии завершён (settled) когда он или исполнен или отклонён, т.е. в любом состоянии, кроме ожидания (это лишь форма речи, не являющаяся настоящим состоянием промиса). Также можно встретить термин исполин (resolved) — это значит что промис завершён или "заблокирован" в ожидании завершения другого промиса. В статье состояния и fates приводится более подробное описание терминологии.

      Свойства

      @@ -69,13 +69,13 @@ new Promise(function(resolve, reject) { ... });
      {{jsxref("Promise.all", "Promise.all(iterable)")}}
      Ожидает исполнения всех промисов или отклонения любого из них.
      -
      Возвращает промис, который исполнится после исполнения всех промисов в iterable. В случае, если любой из промисов будет отклонен, Promise.all будет также отклонен.
      +
      Возвращает промис, который исполнится после исполнения всех промисов в iterable. В случае, если любой из промисов будет отклонён, Promise.all будет также отклонен.
      {{JSxRef("Promise.allSettled", "Promise.allSettled(iterable)")}}
      Ожидает завершения всех полученных промисов (как исполнения так и отклонения).
      Возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.
      {{jsxref("Promise.race", "Promise.race(iterable)")}}
      Ожидает исполнения или отклонения любого из полученных промисов.
      -
      Возвращает промис, который будет исполнен или отклонен с результатом исполнения первого исполненного или отклонённого промиса из .iterable.
      +
      Возвращает промис, который будет исполнен или отклонён с результатом исполнения первого исполненного или отклонённого промиса из .iterable.
      @@ -88,7 +88,7 @@ new Promise(function(resolve, reject) { ... });
      Возвращает промис, исполненный с результатом value.
      @@ -105,7 +105,7 @@ new Promise(function(resolve, reject) { ... });

      Создание промиса

      -

      Объект Promise создается при помощи ключевого слова new и своего конструктора. Конструктор Promise принимает в качестве аргумента функцию, называемую "исполнитель" (executor function). Эта функция должна принимать две функции-колбэка в качестве параметров. Первый из них (resolve) вызывается, когда асинхронная операция завершилась успешно и вернула результат своего исполнения в виде значения. Второй колбэк (reject) вызывается, когда операция не удалась, и возвращает значение, указывающее на причину неудачи, чаще всего объект ошибки.

      +

      Объект Promise создаётся при помощи ключевого слова new и своего конструктора. Конструктор Promise принимает в качестве аргумента функцию, называемую "исполнитель" (executor function). Эта функция должна принимать две функции-колбэка в качестве параметров. Первый из них (resolve) вызывается, когда асинхронная операция завершилась успешно и вернула результат своего исполнения в виде значения. Второй колбэк (reject) вызывается, когда операция не удалась, и возвращает значение, указывающее на причину неудачи, чаще всего объект ошибки.

      const myFirstPromise = new Promise((resolve, reject) => {
         // выполняется асинхронная операция, которая в итоге вызовет:
      diff --git a/files/ru/web/javascript/reference/global_objects/promise/race/index.html b/files/ru/web/javascript/reference/global_objects/promise/race/index.html
      index 79b3fba0b0..da184495a3 100644
      --- a/files/ru/web/javascript/reference/global_objects/promise/race/index.html
      +++ b/files/ru/web/javascript/reference/global_objects/promise/race/index.html
      @@ -10,7 +10,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race
       ---
       
      {{JSRef}}
      -

      Метод Promise.race(iterable) возвращает выполненное или отклоненное обещание, в зависимости от того, с каким результатом завершится первое из переданных обещаний, со значением или причиной отклонения этого обещания.

      +

      Метод Promise.race(iterable) возвращает выполненное или отклонённое обещание, в зависимости от того, с каким результатом завершится первое из переданных обещаний, со значением или причиной отклонения этого обещания.

      {{EmbedInteractiveExample("pages/js/promise-race.html")}}

      @@ -27,11 +27,11 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race

      Возвращаемое значение

      -

      Выполненный или отклоненный {{jsxref("Promise")}} в зависимости от результата первого завершенного из переданных в итерируемом объекте обещаний.

      +

      Выполненный или отклонённый {{jsxref("Promise")}} в зависимости от результата первого завершённого из переданных в итерируемом объекте обещаний.

      Описание

      -

      Метод race  возвращает Обещание (Promise) с результатом, первого завершенного из переданных обещаний. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым.

      +

      Метод race  возвращает Обещание (Promise) с результатом, первого завершённого из переданных обещаний. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым.

      Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/promise/reject/index.html b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html index 9bb06a2115..ebaed59a5f 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/reject/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject ---
      {{JSRef}}
      -

      Метод Promise.reject(reason) возвращает объект Promise, который был отклонен по указанной причине.

      +

      Метод Promise.reject(reason) возвращает объект Promise, который был отклонён по указанной причине.

      Синтаксис

      @@ -19,13 +19,13 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject

      Возвращаемое значение

      -

      Отклоненный с указанной причиной {{jsxref("Promise")}}.

      +

      Отклонённый с указанной причиной {{jsxref("Promise")}}.

      Описание

      -

      Promise.reject возвращает Promise который был отклонен. В целях отладки и выборочного отлова ошибок, удобно использовать в качестве причины объекты {{jsxref("Error")}}.

      +

      Promise.reject возвращает Promise который был отклонён. В целях отладки и выборочного отлова ошибок, удобно использовать в качестве причины объекты {{jsxref("Error")}}.

      Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html b/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html index 1b5cff1c3e..f61fad91ec 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html @@ -10,7 +10,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve ---
      {{JSRef}}
      -

      Метод Promise.resolve(value) возвращает {{jsxref("Promise")}} выполненный с переданным значением. Если переданное значение является thenable - объект (т.е. имеет метод {{jsxref("Promise.then", "\"then\" method")}}), возвращаемое обещание будет следовать thenable - объекту, принимая свое состояние; в ином случае возвращаемое обещание будет выполнено с переданным значением.

      +

      Метод Promise.resolve(value) возвращает {{jsxref("Promise")}} выполненный с переданным значением. Если переданное значение является thenable - объект (т.е. имеет метод {{jsxref("Promise.then", "\"then\" method")}}), возвращаемое обещание будет следовать thenable - объекту, принимая своё состояние; в ином случае возвращаемое обещание будет выполнено с переданным значением.

      Синтаксис

      diff --git a/files/ru/web/javascript/reference/global_objects/promise/then/index.html b/files/ru/web/javascript/reference/global_objects/promise/then/index.html index 211b7692dd..a380cb5b5c 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/then/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/then/index.html @@ -12,7 +12,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then

      Метод then() возвращает {{jsxref("Promise")}}. Метод может принимать два аргумента: колбэк-функции для случаев выполнения и отклонения промиса.

      -

       Если один или оба аргумента отсутствуют или их значения не функции, то then пропустит их и не выбросит ошибку. Если для Promise, который переходит в состояние выполнен или отклонен вызван метод then, и у данного метода нет нужного обработчика, то в таком случае then просто возвращает промис с состоянием начального Promise, для которого then был вызван.

      +

       Если один или оба аргумента отсутствуют или их значения не функции, то then пропустит их и не выбросит ошибку. Если для Promise, который переходит в состояние выполнен или отклонён вызван метод then, и у данного метода нет нужного обработчика, то в таком случае then просто возвращает промис с состоянием начального Promise, для которого then был вызван.

      Синтаксис

      @@ -32,7 +32,7 @@ p.then(value => {
      onFulfilled {{optional_inline}}
      {{jsxref("Function")}} вызывается, когда Promise выполнен. Эта функция принимает один аргумент, значение с которым промис был выполнен. Если значение onFulfilled не функция, то оно автоматически заменяется на "Identity" функцию (возвращает полученный аргумент)
      onRejected {{optional_inline}}
      -
      {{jsxref("Function")}} вызывается, когда Promise  отклонен. Эта функция принимает один аргумент, значение с которым промис был отклонен. Если значение onRejected не функция, то оно автоматически заменяется на "Thrower" функцию (выбрасывает полученный аргумент как ошибку)
      +
      {{jsxref("Function")}} вызывается, когда Promise  отклонён. Эта функция принимает один аргумент, значение с которым промис был отклонён. Если значение onRejected не функция, то оно автоматически заменяется на "Thrower" функцию (выбрасывает полученный аргумент как ошибку)

      Описание

      @@ -58,7 +58,7 @@ p1.then(function(value) {

      Соединение

      -

      Так как метод then возвращает Promise (обещание), вы можете объединить несколько вызовов then в цепочку. Значения возвращаемые из onFulfilled или onRejected колбэков будут автоматически обернуты в обещание.

      +

      Так как метод then возвращает Promise (обещание), вы можете объединить несколько вызовов then в цепочку. Значения возвращаемые из onFulfilled или onRejected колбэков будут автоматически обёрнуты в обещание.

      var p2 = new Promise(function(resolve, reject) {
         resolve(1);
      @@ -88,7 +88,7 @@ p2.then(function(value) {
           var j = response.json();
           // можем что-нибудь делать с j
           return j; // в случае выполнения обещания, значение
      -              // передается в fetch_current_data().then()
      +              // передаётся в fetch_current_data().then()
         });
       }
       
      diff --git a/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html b/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html index e5eaa5af39..e1c5fcbdbc 100644 --- a/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html +++ b/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html @@ -8,7 +8,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/construct ---
      {{JSRef}}
      -

      Статический метод Reflect.construct() работает как new operator. Он эквивалентен new target(...args). Это также дает дополнительную возможность указать другой прототип.

      +

      Статический метод Reflect.construct() работает как new operator. Он эквивалентен new target(...args). Это также даёт дополнительную возможность указать другой прототип.

      {{EmbedInteractiveExample("pages/js/reflect-construct.html")}}
      diff --git a/files/ru/web/javascript/reference/global_objects/reflect/index.html b/files/ru/web/javascript/reference/global_objects/reflect/index.html index 9a93944a56..8f5f7bb306 100644 --- a/files/ru/web/javascript/reference/global_objects/reflect/index.html +++ b/files/ru/web/javascript/reference/global_objects/reflect/index.html @@ -71,7 +71,7 @@ Reflect.has(duck, 'haircut');

      Добавление нового свойства в объект

      Reflect.set(duck, 'eyes', 'black');
      -// вернется "true" если вызов успешен
      +// вернётся "true" если вызов успешен
       // объект "duck" теперь содержит свойство "eyes" со значением "black"

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

      diff --git a/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html b/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html index 8579639a52..c99438a6d8 100644 --- a/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html +++ b/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys ---
      {{JSRef}}
      -

      Статический метод Reflect.ownKeys() возвращает массив имен, а также Symbols собственных полей объекта target .

      +

      Статический метод Reflect.ownKeys() возвращает массив имён, а также Symbols собственных полей объекта target .

      {{EmbedInteractiveExample("pages/js/reflect-ownkeys.html")}}
      diff --git a/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html b/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html index 80c4692d97..fffdadf7c9 100644 --- a/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html +++ b/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html @@ -40,7 +40,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@split

      Этот метод существует для кастомизации поведения (разбиения) подкласса RegExp.

      -

      Если аргумент str не объект типа {{jsxref("RegExp")}}, метод {{jsxref("String.prototype.split()")}} не вызывается, так же не создается объект типа {{jsxref("RegExp")}}.

      +

      Если аргумент str не объект типа {{jsxref("RegExp")}}, метод {{jsxref("String.prototype.split()")}} не вызывается, так же не создаётся объект типа {{jsxref("RegExp")}}.

      Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/regexp/index.html b/files/ru/web/javascript/reference/global_objects/regexp/index.html index 20b0d9b10e..359a8f167d 100644 --- a/files/ru/web/javascript/reference/global_objects/regexp/index.html +++ b/files/ru/web/javascript/reference/global_objects/regexp/index.html @@ -293,7 +293,7 @@ var re = new RegExp('\\w+');
      @@ -380,7 +380,7 @@ var re = new RegExp('\\w+');

      Сопоставляется с x, только если x не предшествует y

      Например, /(?<!-)\d+/ сопоставится с цифрой, только если ей не предшествует минус.
      - /(?<!-)\d+/.exec('3') вернет "3".
      + /(?<!-)\d+/.exec('3') вернёт "3".
       /(?<!-)\d+/.exec('-3')  не сопоставится с цифрой, тк цифре перед цифрой 3 присутствует минус.

      diff --git a/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html b/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html index 3d86f2958e..89551d517b 100644 --- a/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html +++ b/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html @@ -19,7 +19,7 @@ RegExp['$&']

      Значение свойства lastMatch доступно только для чтение и изменяется при успешном совпадении с регулярным выражением.

      -

      Поскольку использование символа "&" приведет к выбрасыванию ошибки {{jsxref("SyntaxError")}}, обратиться к данному свойству с помощью точечной нотации(RegExp.$&) нельзя. Вместо этого стоит использовать скобочную нотацию (RegExp['$&']).

      +

      Поскольку использование символа "&" приведёт к выбрасыванию ошибки {{jsxref("SyntaxError")}}, обратиться к данному свойству с помощью точечной нотации(RegExp.$&) нельзя. Вместо этого стоит использовать скобочную нотацию (RegExp['$&']).

      Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/regexp/n/index.html b/files/ru/web/javascript/reference/global_objects/regexp/n/index.html index 4873c56af0..5becd52a06 100644 --- a/files/ru/web/javascript/reference/global_objects/regexp/n/index.html +++ b/files/ru/web/javascript/reference/global_objects/regexp/n/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/n ---
      {{JSRef}} {{non-standard_header}}
      -

      Нестандартные свойства $1, $2, $3, $4, $5, $6, $7, $8, $9 являются статическими и доступными только для чтения свойствами регулярных выражений, которые содержат найденные подстроки, обернутые в скобки.

      +

      Нестандартные свойства $1, $2, $3, $4, $5, $6, $7, $8, $9 являются статическими и доступными только для чтения свойствами регулярных выражений, которые содержат найденные подстроки, обёрнутые в скобки.

      Синтаксис

      @@ -26,7 +26,7 @@ RegExp.$9

      Значения этих свойств не доступны для изменения, они модифицируются всякий раз при успешном совпадении регулярного выражения.

      -

      Количество возможных подстрок в круглых скобках неограничено, но объект RegExp может содержать в себе только последние 9. Вы можете получить доступ ко всем подстрокам, совпавшим с выражениями внутри круглых скобок, с помощью индексов возвращенного массива.

      +

      Количество возможных подстрок в круглых скобках неограничено, но объект RegExp может содержать в себе только последние 9. Вы можете получить доступ ко всем подстрокам, совпавшим с выражениями внутри круглых скобок, с помощью индексов возвращённого массива.

      Эти свойства могу использоваться при замене текста в методе {{jsxref("String.replace")}}. Когда используете его, не добавляйте их в RegExp. Пример ниже демонстрирует правильное применение. Когда круглые скобки не включены в регулярное выражение, код интерпретирует такие значения, как $n буквально, как литерал (n - положительное число).

      diff --git a/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html b/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html index ea9db422df..af771e9feb 100644 --- a/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html +++ b/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html @@ -53,7 +53,7 @@ console.log(regex.unicode); // true

      Совместимость с браузерами

      - +

      {{Compat("javascript.builtins.RegExp.unicode")}}

      diff --git a/files/ru/web/javascript/reference/global_objects/set/delete/index.html b/files/ru/web/javascript/reference/global_objects/set/delete/index.html index e2ecf26cfd..e6987bffe3 100644 --- a/files/ru/web/javascript/reference/global_objects/set/delete/index.html +++ b/files/ru/web/javascript/reference/global_objects/set/delete/index.html @@ -26,7 +26,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete

      Возвращаемое значение

      -

      true, если элемент был успешно удален из объекта Set, иначе false.

      +

      true, если элемент был успешно удалён из объекта Set, иначе false.

      Примеры

      @@ -35,15 +35,15 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete
      var mySet = new Set();
       mySet.add('foo');
       
      -mySet.delete('bar'); // Вернет false. Отсутствует элемент "bar" для удаления.
      -mySet.delete('foo'); // Вернет true.  Успешно удален.
      +mySet.delete('bar'); // Вернёт false. Отсутствует элемент "bar" для удаления.
      +mySet.delete('foo'); // Вернёт true.  Успешно удалён.
       
      -mySet.has('foo');    // Вернет false. Элемент "foo" больше не присутствует.
      +mySet.has('foo');    // Вернёт false. Элемент "foo" больше не присутствует.
       

      Давайте проверим как удалить Object из Set.

      -
      var setObj = new Set(); // Создаем новый Set.
      +
      var setObj = new Set(); // Создаём новый Set.
       
       setObj.add({x: 10, y: 20}); // Добавляем объект в набор.
       
      diff --git a/files/ru/web/javascript/reference/global_objects/set/foreach/index.html b/files/ru/web/javascript/reference/global_objects/set/foreach/index.html
      index 5ed212666b..643c1f4b3f 100644
      --- a/files/ru/web/javascript/reference/global_objects/set/foreach/index.html
      +++ b/files/ru/web/javascript/reference/global_objects/set/foreach/index.html
      @@ -60,7 +60,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Set/forEach
       
       

      Содержимое объекта Set 

      -

      Приведенный код показывает состояние каждого элемента в объекте Set:

      +

      Приведённый код показывает состояние каждого элемента в объекте Set:

      function logSetElements(value1, value2, set) {
           console.log('s[' + value1 + '] = ' + value2);
      diff --git a/files/ru/web/javascript/reference/global_objects/set/set/index.html b/files/ru/web/javascript/reference/global_objects/set/set/index.html
      index 66e1d0108e..5dabdcbd5d 100644
      --- a/files/ru/web/javascript/reference/global_objects/set/set/index.html
      +++ b/files/ru/web/javascript/reference/global_objects/set/set/index.html
      @@ -18,7 +18,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Set/Set
       
      iterable {{optional_inline}}
      -

      Если передается итеративный объект, все его элементы будут добавлены в новый Set.

      +

      Если передаётся итеративный объект, все его элементы будут добавлены в новый Set.

      Если вы не укажете этот параметр или его значение равно нулю, новый набор будет пустым.

      diff --git a/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html index d625a5a809..ecd0cb98a9 100644 --- a/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html +++ b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer ---
      {{JSRef}}
      -

      Объект SharedArrayBuffer используется для создания разделенного буфера фиксированной длины для хранения примитивных бинарных данных, подобно объекту {{jsxref("ArrayBuffer")}}, но могут быть использованы для создания обзора на разделенную память. В отличие от ArrayBufferSharedArrayBuffer не может быть отсоединен.

      +

      Объект SharedArrayBuffer используется для создания разделённого буфера фиксированной длины для хранения примитивных бинарных данных, подобно объекту {{jsxref("ArrayBuffer")}}, но могут быть использованы для создания обзора на разделённую память. В отличие от ArrayBufferSharedArrayBuffer не может быть отсоединен.

      Синтаксис

      @@ -29,15 +29,15 @@ translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer

      Для разделения памяти с помощью объекта {{jsxref("SharedArrayBuffer")}} между одним агентом в кластере и другим (агент может быть как основной программой web-страницы, так и одним из web-workers), используются postMessage и structured cloning.

      -

      Алгоритм структурированного клонирования принимает SharedArrayBuffers и TypedArrays, отображенный в SharedArrayBuffers. В обоих случаях, объект  SharedArrayBuffer передается получателю, результируя в новый, приватный объект SharedArrayBuffer внутри агента-получателя (так же как для {{jsxref("ArrayBuffer")}}). Однако, блок общих данных, на который ссылаются оба объекта SharedArrayBuffer, это один и тот же блок данных, и сторонние эффекты в блоке в одном из агентов в итоге станут заметны в другом агенте.

      +

      Алгоритм структурированного клонирования принимает SharedArrayBuffers и TypedArrays, отображённый в SharedArrayBuffers. В обоих случаях, объект  SharedArrayBuffer передаётся получателю, результируя в новый, приватный объект SharedArrayBuffer внутри агента-получателя (так же как для {{jsxref("ArrayBuffer")}}). Однако, блок общих данных, на который ссылаются оба объекта SharedArrayBuffer, это один и тот же блок данных, и сторонние эффекты в блоке в одном из агентов в итоге станут заметны в другом агенте.

      var sab = new SharedArrayBuffer(1024);
       worker.postMessage(sab);
       
      -

      Обновление и синхронизация разделенной памяти с помощью Атомарных операций

      +

      Обновление и синхронизация разделённой памяти с помощью Атомарных операций

      -

      Разделенная память может быть создана и изменена одновременно в  workers или основном потоке. В зависимости от системы (ЦПУ, ОС, браузер) может уйти время пока изменения будут распространены по всем контекстам. Для синхронизации необходимы {{jsxref("Атомарные", "атомарные", "", 1)}} операции .

      +

      Разделённая память может быть создана и изменена одновременно в  workers или основном потоке. В зависимости от системы (ЦПУ, ОС, браузер) может уйти время пока изменения будут распространены по всем контекстам. Для синхронизации необходимы {{jsxref("Атомарные", "атомарные", "", 1)}} операции .

      API, принимающие объекты SharedArrayBuffer

      @@ -61,7 +61,7 @@ worker.postMessage(sab);
      SharedArrayBuffer.length
      -
      Длина конструктора SharedArrayBuffer, чье значение равно 1.
      +
      Длина конструктора SharedArrayBuffer, чьё значение равно 1.
      {{jsxref("SharedArrayBuffer.prototype")}}
      Позволяет дополнительные свойства для всех объектов SharedArrayBuffer.
      diff --git a/files/ru/web/javascript/reference/global_objects/string/match/index.html b/files/ru/web/javascript/reference/global_objects/string/match/index.html index 2819776d46..e857555cc6 100644 --- a/files/ru/web/javascript/reference/global_objects/string/match/index.html +++ b/files/ru/web/javascript/reference/global_objects/string/match/index.html @@ -70,7 +70,7 @@ console.log(found); // '.1' - это последнее значение, сопоставленное с группой `(\.\d)`. // Свойство 'index' содержит значение (0) индекса совпадения // относительно начала сопоставления -// Свойство 'input' содержит значение введенной строки.
      +// Свойство 'input' содержит значение введённой строки.

      Пример: использование флагов глобальности и игнорирования регистра с методом match()

      diff --git a/files/ru/web/javascript/reference/global_objects/string/matchall/index.html b/files/ru/web/javascript/reference/global_objects/string/matchall/index.html index 6c8defbc17..1b698ae6cc 100644 --- a/files/ru/web/javascript/reference/global_objects/string/matchall/index.html +++ b/files/ru/web/javascript/reference/global_objects/string/matchall/index.html @@ -72,7 +72,7 @@ Array.from(matches, m => m[0]);

      Улучшенный доступ к группам захвата

      -

      Еще одна веская причина использовать matchAll это улучшенный доступ к группам захвата. Группы захвата игнорируются при использовании match() с глобальным флагом /g:

      +

      Ещё одна веская причина использовать matchAll это улучшенный доступ к группам захвата. Группы захвата игнорируются при использовании match() с глобальным флагом /g:

      var regexp = /t(e)(st(\d?))/g;
       var str = 'test1test2';
      diff --git a/files/ru/web/javascript/reference/global_objects/string/padend/index.html b/files/ru/web/javascript/reference/global_objects/string/padend/index.html
      index a380c3f50d..45c72b87e2 100644
      --- a/files/ru/web/javascript/reference/global_objects/string/padend/index.html
      +++ b/files/ru/web/javascript/reference/global_objects/string/padend/index.html
      @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd
       ---
       
      {{JSRef}}{{SeeCompatTable}}
      -

      Метод padEnd() дополняет текущую строку с помощью заданной строки (в конечном счете повторяя), так чтобы результирующая строка достигла заданной длины. Дополнение применяется в конце (справа) текущей строки.

      +

      Метод padEnd() дополняет текущую строку с помощью заданной строки (в конечном счёте повторяя), так чтобы результирующая строка достигла заданной длины. Дополнение применяется в конце (справа) текущей строки.

      Синтаксис

      @@ -23,7 +23,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd
      targetLength
      Длина результирующей строки, после того как текущая строка была дополнена. Если этот параметр меньше длины текущей строки, то будет возвращена текущая строка , как она есть.
      padString {{optional_inline}}
      -
      Строка для дополнения текущей строки с. Если эта строка слишком длинная, она будет урезана и будет применяться ее левая большая часть. " " (U+0020) - значение по умолчанию для этого параметра.
      +
      Строка для дополнения текущей строки с. Если эта строка слишком длинная, она будет урезана и будет применяться её левая большая часть. " " (U+0020) - значение по умолчанию для этого параметра.

      Возвращаемое значение

      @@ -39,7 +39,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd

      Характеристики

      -

      Этот метод еще не достиг стандарта ECMAScript. Сейчас он в состоянии proposal for ECMAScript.

      +

      Этот метод ещё не достиг стандарта ECMAScript. Сейчас он в состоянии proposal for ECMAScript.

      Совместимость с браузерами

      diff --git a/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html b/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html index 8ccf95507f..432f977fc5 100644 --- a/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html +++ b/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html @@ -7,7 +7,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll

      Метод replaceAll() возвращает новую строку со всеми совпадениями pattern , который меняется на replacementpattern может быть строкой или регулярным выражением, и replacement может быть строкой или функция возвращающая каждое совпадение.

      -

      Исходная строка остается без изменений.

      +

      Исходная строка остаётся без изменений.

      {{EmbedInteractiveExample("pages/js/string-replaceall.html")}}
      @@ -19,14 +19,14 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll
      -

      Когда вы используете `regexp` вы должны установить флаг глобального поиска ("g"), иначе вернется ошибка TypeError: "replaceAll must be called with a global RegExp".

      +

      Когда вы используете `regexp` вы должны установить флаг глобального поиска ("g"), иначе вернётся ошибка TypeError: "replaceAll must be called with a global RegExp".

      Parameters

      regexp (pattern)
      -
      Регулярное выражение или буква с глобальным флагом поиска ("g"). Совпадения меняются на newSubstr или значении возвращенное указанной функцией function. A RegExp без глобального флага поиска ("g") вернет ошибку TypeError: "replaceAll must be called with a global RegExp".
      +
      Регулярное выражение или буква с глобальным флагом поиска ("g"). Совпадения меняются на newSubstr или значении возвращённое указанной функцией function. A RegExp без глобального флага поиска ("g") вернёт ошибку TypeError: "replaceAll must be called with a global RegExp".
      substr
      Подстрока, которая заменится newSubstr. Обрабатывается как буквенная строка, не интерпретируется как регулярное выражение.
      newSubstr (replacement)
      @@ -45,7 +45,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll

      Указание строки в качестве параметра

      -

      Замененная строка может включатся в следующие специальные шаблоны:

      +

      Заменённая строка может включатся в следующие специальные шаблоны:

      \n -

      Где n является целым положительным числом. Обратная ссылка на последнюю сопоставившуюся подстроку в n-ных по счёту круглых скобках в регулярном выражении (нумерация скобок идет слева направо).

      +

      Где n является целым положительным числом. Обратная ссылка на последнюю сопоставившуюся подстроку в n-ных по счёту круглых скобках в регулярном выражении (нумерация скобок идёт слева направо).

      Например, шаблон /яблоко(,)\sапельсин\1/ сопоставится подстроке «яблоко, апельсин,» в строке «яблоко, апельсин, вишня, персик». Более подробный пример смотрите после этой таблицы.

      @@ -82,7 +82,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll

      Вы можете передать функцию вторым параметром. Этом случае, функция вызывается после нахождения совпадений. Результат функции может быть использована как замещающая строка. (Внимание: Выше упомянутые специальные шаблоны замены в данном случае неприменимы.)

      -

      Функция может быть вызвана многократно для каждого замененного совпадения, если регулярное выражение указано с глобальным флагом("g").

      +

      Функция может быть вызвана многократно для каждого заменённого совпадения, если регулярное выражение указано с глобальным флагом("g").

      Функция имеет следующие аргументы:

      diff --git a/files/ru/web/javascript/reference/global_objects/string/slice/index.html b/files/ru/web/javascript/reference/global_objects/string/slice/index.html index 5b6f3895c4..021c1839ae 100644 --- a/files/ru/web/javascript/reference/global_objects/string/slice/index.html +++ b/files/ru/web/javascript/reference/global_objects/string/slice/index.html @@ -35,7 +35,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/String/slice

      Возвращаемое значение

      -

      Новая строка, содержащая извлеченную часть строки.

      +

      Новая строка, содержащая извлечённую часть строки.

      Описание

      @@ -75,15 +75,15 @@ str.slice(0, -1); // вернёт 'Приближается утро'

      В этом примере начальным индексом считается 11-й символ с конца строки, а конечным - 16-й с начала.

      -
      str.slice(-11, 16); // вернет 'ается утр'
      +
      str.slice(-11, 16); // вернёт 'ается утр'

      Здесь начальным индексом считается 6-й символ от начала строки, а конечным - 7-й с конца.

      -
      str.slice(6, -7); // вернет 'жаетс'
      +
      str.slice(6, -7); // вернёт 'жаетс'

      В этом примере оба индекса считаются с конца строки: 5-й для начального индекса, 1-й для конечного.

      -
      str.slice(-5, -1); // вернет 'утро'
      +
      str.slice(-5, -1); // вернёт 'утро'

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

      diff --git a/files/ru/web/javascript/reference/global_objects/symbol/for/index.html b/files/ru/web/javascript/reference/global_objects/symbol/for/index.html index 5b4a6ee85c..87d85f23ce 100644 --- a/files/ru/web/javascript/reference/global_objects/symbol/for/index.html +++ b/files/ru/web/javascript/reference/global_objects/symbol/for/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for ---
      {{JSRef}}
      -

      Метод Symbol.for(key) ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создается новый разделяемый символ для данного ключа в глобальном реестре символов.

      +

      Метод Symbol.for(key) ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создаётся новый разделяемый символ для данного ключа в глобальном реестре символов.

      Синтаксис

      diff --git a/files/ru/web/javascript/reference/global_objects/symbol/index.html b/files/ru/web/javascript/reference/global_objects/symbol/index.html index 739474189c..71361cc695 100644 --- a/files/ru/web/javascript/reference/global_objects/symbol/index.html +++ b/files/ru/web/javascript/reference/global_objects/symbol/index.html @@ -35,7 +35,7 @@ var sym2 = Symbol("foo"); var sym3 = Symbol("foo"); -

      Код выше создает три новых символа. Заметьте, что Symbol("foo") не выполняет приведение (англ. coercion) строки "foo" к символу. Это выражение создает каждый раз новый символ:

      +

      Код выше создаёт три новых символа. Заметьте, что Symbol("foo") не выполняет приведение (англ. coercion) строки "foo" к символу. Это выражение создаёт каждый раз новый символ:

      Symbol("foo") === Symbol("foo"); // false
      @@ -55,7 +55,7 @@ typeof symObj; // "object"

      Разделяемые символы в глобальном символьном реестре

      -

      Приведенный выше синтаксис, использующий функцию Symbol(), не создаст глобальный символ, который был бы доступен в любом месте вашего кода. Для создания символов, доступных во всех файлах и в окружении (глобальной области), используйте методы {{jsxref("Symbol.for()")}} и {{jsxref("Symbol.keyFor()")}}, чтобы задать или получить символ из глобального символьного реестра.

      +

      Приведённый выше синтаксис, использующий функцию Symbol(), не создаст глобальный символ, который был бы доступен в любом месте вашего кода. Для создания символов, доступных во всех файлах и в окружении (глобальной области), используйте методы {{jsxref("Symbol.for()")}} и {{jsxref("Symbol.keyFor()")}}, чтобы задать или получить символ из глобального символьного реестра.

      Поиск символьных свойств у объектов

      @@ -97,9 +97,9 @@ typeof symObj; // "object"
      {{jsxref("Symbol.hasInstance")}}
      Метод, определяющий, распознает ли конструктор некоторый объект как свой экземпляр. Используется оператором {{jsxref("Operators/instanceof", "instanceof")}}.
      {{jsxref("Symbol.isConcatSpreadable")}}
      -
      Булево значение, показывающее, должен ли объект быть сведен к плоскому представлению (англ. flatten) в виде массива его элементов функцией {{jsxref("Array.prototype.concat()")}}.
      +
      Булево значение, показывающее, должен ли объект быть сведён к плоскому представлению (англ. flatten) в виде массива его элементов функцией {{jsxref("Array.prototype.concat()")}}.
      {{jsxref("Symbol.unscopables")}}
      -
      Массив строковых имен свойств. Позволяет скрыть свойства от инструкции with (прежде всего для обратной совместимости).
      +
      Массив строковых имён свойств. Позволяет скрыть свойства от инструкции with (прежде всего для обратной совместимости).
      {{jsxref("Symbol.species")}}
      Метод, определяющий конструктор для порождённых объектов.
      {{jsxref("Symbol.toPrimitive")}}
      @@ -112,7 +112,7 @@ typeof symObj; // "object"
      {{jsxref("Symbol.for()", "Symbol.for(key)")}}
      -
      Ищет существующие символы по заданному ключу и возвращает его, если он найден. В противном случае создается новый символ для данного ключа в глобальном реестре символов.
      +
      Ищет существующие символы по заданному ключу и возвращает его, если он найден. В противном случае создаётся новый символ для данного ключа в глобальном реестре символов.
      {{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}
      Получает по разделяемому символу его ключ из глобального реестра символов.
      @@ -153,7 +153,7 @@ typeof Symbol.iterator === 'symbol'

      Символы и конструкция for...in

      -

      Символы не перечисляются при итерации {{jsxref("Statements/for...in","for...in")}}. В дополнение к этому, {{jsxref("Object.getOwnPropertyNames()")}} не вернет символьные свойства объекта. Тем не менее, их можно получить с помощью {{jsxref("Object.getOwnPropertySymbols()")}}.

      +

      Символы не перечисляются при итерации {{jsxref("Statements/for...in","for...in")}}. В дополнение к этому, {{jsxref("Object.getOwnPropertyNames()")}} не вернёт символьные свойства объекта. Тем не менее, их можно получить с помощью {{jsxref("Object.getOwnPropertySymbols()")}}.

      var obj = {};
       
      @@ -175,7 +175,7 @@ for (var i in obj) {
       
       

      Подробности см. {{jsxref("JSON.stringify()")}}.

      -

      Объекты-обёртки для Symbol в качестве имен свойств

      +

      Объекты-обёртки для Symbol в качестве имён свойств

      Когда объект-обёртка символа используется в качестве имени свойства, этот объект сводится к символу, который он оборачивает:

      diff --git a/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html b/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html index ac35c69346..1252063034 100644 --- a/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html +++ b/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html @@ -21,7 +21,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive

      Описание

      -

      С помощью свойства Symbol.toPrimitive (которое описывается как функция), объект может быть приведен к примитивному типу. Функция вызывается со строковым аргументом hint, который передает желаемый тип примитива. Значением аргумента hint может быть одно из следующих значений "number", "string", и "default".

      +

      С помощью свойства Symbol.toPrimitive (которое описывается как функция), объект может быть приведён к примитивному типу. Функция вызывается со строковым аргументом hint, который передаёт желаемый тип примитива. Значением аргумента hint может быть одно из следующих значений "number", "string", и "default".

      Примеры

      diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/index.html index 17bd236f34..3db99bf074 100644 --- a/files/ru/web/javascript/reference/global_objects/typedarray/index.html +++ b/files/ru/web/javascript/reference/global_objects/typedarray/index.html @@ -35,7 +35,7 @@ Int8Array(), Uint8Array(), Uint8ClampedArray(), Int16Array(), Uint16Array(), Int
      object
      Новый массив создаётся так, как если бы была вызвана функция TypedArray.from()
      buffer, byteOffset, length
      -
      Когда происходит вызов с параметрами buffer и опциональными параметрами byteOffset и length, то будет создан новый типизированный массив, который будет отражать buffer типа {{jsxref("ArrayBuffer")}}. Параметры byteOffset и length определяют диапазон (размер) памяти, выводимый данным массивоподобным представлением. Если оба этих параметра (byteOffset и length) опущены, то будет использован весь буфер buffer; если опущен только length, то будет выведен весь остаток буфера после смещения начала отсчета элементов, заданного параметром byteOffset.
      +
      Когда происходит вызов с параметрами buffer и опциональными параметрами byteOffset и length, то будет создан новый типизированный массив, который будет отражать buffer типа {{jsxref("ArrayBuffer")}}. Параметры byteOffset и length определяют диапазон (размер) памяти, выводимый данным массивоподобным представлением. Если оба этих параметра (byteOffset и length) опущены, то будет использован весь буфер buffer; если опущен только length, то будет выведен весь остаток буфера после смещения начала отсчёта элементов, заданного параметром byteOffset.

      Описание

      @@ -218,7 +218,7 @@ for (var k in typedArrayTypes)
      - + diff --git a/files/ru/web/javascript/reference/global_objects/unescape/index.html b/files/ru/web/javascript/reference/global_objects/unescape/index.html index b0052bf0dc..0aecf842d0 100644 --- a/files/ru/web/javascript/reference/global_objects/unescape/index.html +++ b/files/ru/web/javascript/reference/global_objects/unescape/index.html @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/unescape

      Описание

      -

      Устаревший метод unescape(str) создает новую строку в которой шестнадцатеричная последовательность символов вида %xx заменяется эквивалентами из кодировки ASCII. Знаки, закодированные в формате %uxxxx (знаки Юникода), заменяются знаками Юникода в шестнадцатеричной кодировке xxxx.

      +

      Устаревший метод unescape(str) создаёт новую строку в которой шестнадцатеричная последовательность символов вида %xx заменяется эквивалентами из кодировки ASCII. Знаки, закодированные в формате %uxxxx (знаки Юникода), заменяются знаками Юникода в шестнадцатеричной кодировке xxxx.

      Последовательность может быть результатом работы функции вроде {{jsxref("Global_Objects/escape", "escape")}}. Т.к. {{jsxref("Global_Objects/decodeURIComponent", "unescape")}} является устаревшей, используйте {{jsxref("Global_Objects/decodeURI", "decodeURI")}} или {{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} вместо неё.

      diff --git a/files/ru/web/javascript/reference/global_objects/uneval/index.html b/files/ru/web/javascript/reference/global_objects/uneval/index.html index 21cd4e9958..2fa30aeeaa 100644 --- a/files/ru/web/javascript/reference/global_objects/uneval/index.html +++ b/files/ru/web/javascript/reference/global_objects/uneval/index.html @@ -10,7 +10,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/uneval
      Сводка
      -

      uneval() метод создает строковое представление исходного кода объекта.

      +

      uneval() метод создаёт строковое представление исходного кода объекта.

      Синтаксис

      diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html index 260264b01d..e99dbd4a2d 100644 --- a/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html +++ b/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html @@ -32,7 +32,7 @@ wm.has(window) // false

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

      -

      Не входит ни в одну текущую спецификацию или черновик. Этот метод был частью черновика ECMAScript 6, до 28 ревизии (версия от 14 октября, 2014), но был удален в последующих версиях черновика. В финальном стандарте его не будет.

      +

      Не входит ни в одну текущую спецификацию или черновик. Этот метод был частью черновика ECMAScript 6, до 28 ревизии (версия от 14 октября, 2014), но был удалён в последующих версиях черновика. В финальном стандарте его не будет.

      Совместимость с браузерами

      diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html index 8072855d1e..595f0ab82e 100644 --- a/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html +++ b/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html @@ -15,7 +15,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete
      key
      -
      Обязателен. Ключ элемента, который будет уделен из объекта WeakMap.
      +
      Обязателен. Ключ элемента, который будет уделён из объекта WeakMap.

      Возвращаемое значение

      diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/index.html index 1bf1b3c017..c849670ad7 100644 --- a/files/ru/web/javascript/reference/global_objects/weakmap/index.html +++ b/files/ru/web/javascript/reference/global_objects/weakmap/index.html @@ -27,7 +27,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap

      Почему WeakMap?

      -

      Опытный JavaScript разработчик заметит, что map API можно реализовать на JavaScript c помощью двух массивов (один для ключей, второй для значений) и четырех общих API методов. Установка элементов в этот map должна будет одновременно запушить ключи и значения. В результате индексы ключа и значения будут корректными. Получение значений с map потребует итерирование ключей, чтобы найти совпадение, а затем использование индекса этого соответствия для извлечения соответствующего значения из массива значений.

      +

      Опытный JavaScript разработчик заметит, что map API можно реализовать на JavaScript c помощью двух массивов (один для ключей, второй для значений) и четырёх общих API методов. Установка элементов в этот map должна будет одновременно запушить ключи и значения. В результате индексы ключа и значения будут корректными. Получение значений с map потребует итерирование ключей, чтобы найти совпадение, а затем использование индекса этого соответствия для извлечения соответствующего значения из массива значений.

      У такой реализации было бы два главных неудобства. Первым является O(n) поиск (где n — количество ключей в map), так как обе операции требуют итерирование списка ключей для нахождения совпадения. Вторым – проблема утечки памяти. В словарях, написанных вручную, массив с ключами будет хранить ссылки на объекты-ключи, не давая им быть помеченными сборщиком мусора. В нативных WeakMap, ссылки на объекты-ключи хранятся «слабо», что означает то, что они не предотвратят сборку мусора в том случае, если других ссылок на объект не будет.

      diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html index 90f80474a6..e463183f01 100644 --- a/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html +++ b/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html @@ -69,7 +69,7 @@ fetch('simple.wasm').then(response =>

      Совместимость с браузером

      - +

      {{Compat("javascript.builtins.WebAssembly.compile")}}

      diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html index 106519cdf2..79b702b091 100644 --- a/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html +++ b/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html @@ -31,7 +31,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStrea

      Примеры

      -

      Следующий пример (см. Нашу демонстрацию compile-streaming.html на GitHub и view it live) напрямую передает модуль .wasm из исходника, затем компилирует его в объект {{jsxref("WebAssembly.Module")}}.
      +

      Следующий пример (см. Нашу демонстрацию compile-streaming.html на GitHub и view it live) напрямую передаёт модуль .wasm из исходника, затем компилирует его в объект {{jsxref("WebAssembly.Module")}}.
      Поскольку функция compileStreaming() принимает обещание для объекта {{domxref("Response")}}, вы можете напрямую передать ему вызов {{domxref("WindowOrWorkerGlobalScope.fetch()")}}, и он передаст ответ в выполняемую функцию.

      var importObject = { imports: { imported_func: arg => console.log(arg) } };
      @@ -40,7 +40,7 @@ WebAssembly.compileStreaming(fetch('simple.wasm'))
       .then(module => WebAssembly.instantiate(module, importObject))
       .then(instance => instance.exports.exported_func());
      -

      Затем создается полученный экземпляр модуля с помощью {{jsxref("WebAssembly.instantiate()")}} и вызывается экспортированная функция.

      +

      Затем создаётся полученный экземпляр модуля с помощью {{jsxref("WebAssembly.instantiate()")}} и вызывается экспортированная функция.

      Характеристики

      @@ -65,7 +65,7 @@ WebAssembly.compileStreaming(fetch('simple.wasm'))

      Совместимость с браузером

      - +

      {{Compat("javascript.builtins.WebAssembly.compileStreaming")}}

      diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/index.html index daff5d4ee7..5265fcdac1 100644 --- a/files/ru/web/javascript/reference/global_objects/webassembly/index.html +++ b/files/ru/web/javascript/reference/global_objects/webassembly/index.html @@ -5,9 +5,9 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly ---
      {{JSRef}}{{SeeCompatTable}}
      -

      Объект JavaScript WebAssembly действует как пространство имен для всего WebAssembly-связанного функционала.

      +

      Объект JavaScript WebAssembly действует как пространство имён для всего WebAssembly-связанного функционала.

      -

      В отличие от большинства других глобальных объектов, WebAssembly не является конструктором (это не объект функции). Можно сравнить его с {{jsxref("Math")}}, который так же является пространством имен констант и функций, или  {{jsxref("Intl")}}, который является пространством имен для конструкторов интернационализации и других языково-чувствительных функций.

      +

      В отличие от большинства других глобальных объектов, WebAssembly не является конструктором (это не объект функции). Можно сравнить его с {{jsxref("Math")}}, который так же является пространством имён констант и функций, или  {{jsxref("Intl")}}, который является пространством имён для конструкторов интернационализации и других языково-чувствительных функций.

      Описание

      @@ -34,24 +34,24 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly
      {{jsxref("WebAssembly.Module()")}}
      -
      Создает новый объект WebAssembly Module.
      +
      Создаёт новый объект WebAssembly Module.
      {{jsxref("WebAssembly.Instance()")}}
      -
      Создает новый объект WebAssembly Instance.
      +
      Создаёт новый объект WebAssembly Instance.
      {{jsxref("WebAssembly.Memory()")}}
      -
      Создает новый объект WebAssembly Memory.
      +
      Создаёт новый объект WebAssembly Memory.
      {{jsxref("WebAssembly.Table()")}}
      -
      Создает новый объект WebAssembly Table.
      +
      Создаёт новый объект WebAssembly Table.
      {{jsxref("WebAssembly.CompileError()")}}
      -
      Создает новый объект WebAssembly CompileError.
      +
      Создаёт новый объект WebAssembly CompileError.
      {{jsxref("WebAssembly.LinkError()")}}
      -
      Создает новый объект WebAssembly LinkError.
      +
      Создаёт новый объект WebAssembly LinkError.
      {{jsxref("WebAssembly.RuntimeError()")}}
      -
      Создает новый объект WebAssembly RuntimeError.
      +
      Создаёт новый объект WebAssembly RuntimeError.

      Примеры

      -

      После загрузки некоторого байт-кода WebAssembly с помощью fetch, мы компилируем и создаем экземпляр модуля с помощью функции {{jsxref("WebAssembly.instantiate()")}}, импортируя функции JavaScript в WebAssembly Module в процессе. Этот промис результирует в объект (result), содержащий скомпилированные Module и объекты Instance. Мы можем вызвать Exported WebAssembly function, которая была экспортирована через Instance.

      +

      После загрузки некоторого байт-кода WebAssembly с помощью fetch, мы компилируем и создаём экземпляр модуля с помощью функции {{jsxref("WebAssembly.instantiate()")}}, импортируя функции JavaScript в WebAssembly Module в процессе. Этот промис результирует в объект (result), содержащий скомпилированные Module и объекты Instance. Мы можем вызвать Exported WebAssembly function, которая была экспортирована через Instance.

      var importObject = {
         imports: {
      @@ -148,7 +148,7 @@ fetch('simple.wasm').then(response =>
       
      {{SpecName('Typed Array')}} {{Spec2('Typed Array')}}Определяет работу TypedArray и ArrayBufferView. Заменен в ECMAScript 6.Определяет работу TypedArray и ArrayBufferView. Заменён в ECMAScript 6.
      {{SpecName('ES6', '#sec-typedarray-objects', 'TypedArray Objects')}}
      -

      [1] WebAssembly включен в Firefox 52+, хотя не валиден в Firefox 52 Extended Support Release (ESR.)

      +

      [1] WebAssembly включён в Firefox 52+, хотя не валиден в Firefox 52 Extended Support Release (ESR.)

      [2] В настоящее время поддерживается флаг «Экспериментальные функции JavaScript».  Для более подробной информации смотрите этот blog post.

      diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html index eb9bc5ce48..23fab50edb 100644 --- a/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html +++ b/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table ---
      {{JSRef}}
      -

      Объект WebAssembly.Table() - это JavaScript обертка — структура похожая на массив, представляющая таблицу функций WebAssembly. Таблица, созданная через JavaScript или в коде WebAssembly, будет доступна и может быть изменена как из JavaScript, так и из WebAssembly.

      +

      Объект WebAssembly.Table() - это JavaScript обёртка — структура похожая на массив, представляющая таблицу функций WebAssembly. Таблица, созданная через JavaScript или в коде WebAssembly, будет доступна и может быть изменена как из JavaScript, так и из WebAssembly.

      Обратите внимание: Таблицы сейчас хранят только ссылки на функции, но это может быть расширено в будущем.

      @@ -15,7 +15,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table
      WebAssembly.Table()
      -
      Создает новый объект Table.
      +
      Создаёт новый объект Table.

      Экземпляры Table

      @@ -44,14 +44,14 @@ translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table

      Примеры

      -

      Следующий пример (смотри исходный код и живую версию table2.html) создает новый экземпляр WebAssembly Table с 2 элементами. После этого выводит длину таблицы и содержимое первых двух элементов (полученных через {{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} чтобы показать что длина равняется 2 и элементы равны {{jsxref("null")}}.

      +

      Следующий пример (смотри исходный код и живую версию table2.html) создаёт новый экземпляр WebAssembly Table с 2 элементами. После этого выводит длину таблицы и содержимое первых двух элементов (полученных через {{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} чтобы показать что длина равняется 2 и элементы равны {{jsxref("null")}}.

      var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
       console.log(tbl.length);  // "2"
       console.log(tbl.get(0));  // "null"
       console.log(tbl.get(1));  // "null"
      -

      После этого мы создаем объект импорта содержащий таблицу:

      +

      После этого мы создаём объект импорта содержащий таблицу:

      var importObj = {
         js: {
      @@ -59,7 +59,7 @@ console.log(tbl.get(1));  // "null"
      } };
      -

      После этого, мы создаем экземпляр модуля wasm (table2.wasm) используя метод {{jsxref("WebAssembly.instantiateStreaming()")}}.  Модуль table2.wasm содержит две функции, одна возвращает 42, а вторая - 83) и сохраняет эти функции под индексами 0 и 1 в импортированную таблицу (смотри текстовую версию).  Таким образом, после создания wasm-модуля, таблица имеет туже длину, но элементы таблицы стали функциями экспортированными из WebAssembly которые можно вызывать из JS.

      +

      После этого, мы создаём экземпляр модуля wasm (table2.wasm) используя метод {{jsxref("WebAssembly.instantiateStreaming()")}}.  Модуль table2.wasm содержит две функции, одна возвращает 42, а вторая - 83) и сохраняет эти функции под индексами 0 и 1 в импортированную таблицу (смотри текстовую версию).  Таким образом, после создания wasm-модуля, таблица имеет туже длину, но элементы таблицы стали функциями экспортированными из WebAssembly которые можно вызывать из JS.

      WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
       .then(function(obj) {
      @@ -68,9 +68,9 @@ console.log(tbl.get(1));  // "null"
        console.log(tbl.get(1)()); });
    -

    Заметьте что понадобилось добавить второй оператор вызова функции чтобы вызвать функцию возвращенную из талицы (т.е. get(0)() вместо get(0)) .

    +

    Заметьте что понадобилось добавить второй оператор вызова функции чтобы вызвать функцию возвращённую из талицы (т.е. get(0)() вместо get(0)) .

    -

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

    +

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

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

    diff --git a/files/ru/web/javascript/reference/iteration_protocols/index.html b/files/ru/web/javascript/reference/iteration_protocols/index.html index cc9b66658a..4c42e875f7 100644 --- a/files/ru/web/javascript/reference/iteration_protocols/index.html +++ b/files/ru/web/javascript/reference/iteration_protocols/index.html @@ -9,7 +9,7 @@ translation_of: Web/JavaScript/Reference/Iteration_protocols
    {{jsSidebar("More")}}
    -

    Одно из нововведений стандарта ECMAScript 2015 - протоколы перебора, которые могут реализованы любым объектом, соблюдая при этом определенные правила.

    +

    Одно из нововведений стандарта ECMAScript 2015 - протоколы перебора, которые могут реализованы любым объектом, соблюдая при этом определённые правила.

    Протоколы перебора

    @@ -42,7 +42,7 @@ translation_of: Web/JavaScript/Reference/Iteration_protocols

    Протокол "Итератор" определяет стандартный способ получения последовательности значений  (конечной или бесконечной).

    -

    Объект является итератором, если в нем определен метод next() , реализующий следующую логику:

    +

    Объект является итератором, если в нем определён метод next() , реализующий следующую логику:

    @@ -129,7 +129,7 @@ someString + "" // "hi"

    {{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}} и {{jsxref("Set")}} итерируемы, так как их прототипы содержат @@iterator метод, а {{jsxref("Object")}} нет, так как прототип {{jsxref("Object")}} не содержит метода @@iterator

    -

    Итерируемость определенная пользователем

    +

    Итерируемость определённая пользователем

    Мы можем создать итерируемый объект сами:

    diff --git a/files/ru/web/javascript/reference/lexical_grammar/index.html b/files/ru/web/javascript/reference/lexical_grammar/index.html index 24705ce8ec..9c74d62e61 100644 --- a/files/ru/web/javascript/reference/lexical_grammar/index.html +++ b/files/ru/web/javascript/reference/lexical_grammar/index.html @@ -50,7 +50,7 @@ ECMAScript также определяет ключевые слова и лит

    Пробелы

    -

    Пробельные символы улучшают читабельность исходного текста и разделяет токены друг от друга. Пробельные символы обычно не обязательны для функционирования кода. Утилиты для уменьшения объема кода часто удаляют пробельные символы, чтобы уменьшить объем кода.

    +

    Пробельные символы улучшают читабельность исходного текста и разделяет токены друг от друга. Пробельные символы обычно не обязательны для функционирования кода. Утилиты для уменьшения объёма кода часто удаляют пробельные символы, чтобы уменьшить объем кода.

    @@ -212,7 +212,7 @@ comment();

    Третий специализированный синтаксис комментариев, шебанг комментарий, в процессе стандартизации в ECMAScript (смотреть Hashbang Grammar proposal).

    -

    Шебанг комментарий ведет себя точно также как и однострочный (//) комментарий. Вместо этого, он начинается с #! и действителен только в самом начале скрипта или модуля. Обратите внимание, что никакие пробелы не разрешены перед #!. Комментарий состоит из всех символов после #! до конца первой строки; только такой комментарий разрешен.

    +

    Шебанг комментарий ведёт себя точно также как и однострочный (//) комментарий. Вместо этого, он начинается с #! и действителен только в самом начале скрипта или модуля. Обратите внимание, что никакие пробелы не разрешены перед #!. Комментарий состоит из всех символов после #! до конца первой строки; только такой комментарий разрешен.

    Шебанг комментарий определяет путь к  JavaScript интерпретатору, скрипт которого Вы хотите выполнить. Пример, как это работает:

    @@ -366,7 +366,7 @@ false 0777 // распознается, как восьмеричное число, 511 - как десятичное число -

    Имейте в виду, что литералы десятичных чисел могут начинаться с нуля (0), за которым следует другое десятичное число, но в случае, если число начинается с нуля и за ним идет цифра меньше 8, то число будет распознано как восьмеричное. This won't throw in JavaScript, see {{bug(957513)}}. See also the page about {{jsxref('Global_Objects/parseInt','parseInt()','Octal_interpretations_with_no_radix')}}.

    +

    Имейте в виду, что литералы десятичных чисел могут начинаться с нуля (0), за которым следует другое десятичное число, но в случае, если число начинается с нуля и за ним идёт цифра меньше 8, то число будет распознано как восьмеричное. This won't throw in JavaScript, see {{bug(957513)}}. See also the page about {{jsxref('Global_Objects/parseInt','parseInt()','Octal_interpretations_with_no_radix')}}.

    Binary (двоичные числа)

    @@ -403,7 +403,7 @@ var m = 0o644; // 420
    var o = { a: "foo", b: "bar", c: 42 };
     
    -// сокращенная нотация. Появилась в ES2015
    +// сокращённая нотация. Появилась в ES2015
     var a = "foo", b = "bar", c = 42;
     var o = {a, b, c};
     // вместо
    @@ -481,7 +481,7 @@ tag `string text ${expression} string text`
  • return
  • -

    Спецификация ECMAScript напоминает о трех правилах вставки точки с запятой.

    +

    Спецификация ECMAScript напоминает о трёх правилах вставки точки с запятой.

    1. Точка с запятой ставится до, когда ограничитель строки или "}" is encountered that is not allowed by the grammar.

    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
    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 966ea49b80..a956f73e66 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 выбрасывает исключение

    @@ -136,7 +136,7 @@ throwsValue() }
    -

    Заметьте, что пример выше не содержит await на return, потому что возвращаемое значение функции async неявно обернуто в {{jsxref("Promise.resolve")}}.

    +

    Заметьте, что пример выше не содержит await на return, потому что возвращаемое значение функции async неявно обёрнуто в {{jsxref("Promise.resolve")}}.

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

    @@ -165,7 +165,7 @@ throwsValue()

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

    - +

    {{Compat("javascript.statements.async_function")}}

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

    Обратите внимание, что блок инструкций не заканчивается точкой с запятой.

    -

    Блок инструкций часто называется сложной (составной) инструкцией в других языках. Он позволяет вам использовать несколько операторов там, где JavaScript ожидает один оператор. Помещение инструкций в блок - это распространенная практика в JavaScript. Противоположное поведение - использование пустого оператора там, где никаких действий не нужно, а оператор требуется.

    +

    Блок инструкций часто называется сложной (составной) инструкцией в других языках. Он позволяет вам использовать несколько операторов там, где JavaScript ожидает один оператор. Помещение инструкций в блок - это распространённая практика в JavaScript. Противоположное поведение - использование пустого оператора там, где никаких действий не нужно, а оператор требуется.

    Правила области видимости блока

    С использованием 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 6e772f9c6a..507c13cb10 100644
    --- a/files/ru/web/javascript/reference/statements/class/index.html
    +++ b/files/ru/web/javascript/reference/statements/class/index.html
    @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Statements/class
     ---
     
    {{jsSidebar("Statements")}}
    -

    Class declaration создает новый класс с данным именем на основе прототипного наследования.

    +

    Class declaration создаёт новый класс с данным именем на основе прототипного наследования.

    Можно так же определить класс, используя {{jsxref("Operators/class", "class expression", "", 1)}}. Но в отличие от class expression, class declaration не позволяет снова объявить уже существующий класс, это приведёт к ошибке типа.

    @@ -54,7 +54,7 @@ class Square extends Polygon { class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
    -

    Та же ошибка будет вызвана, если класс был определен перед использованием class declaration.

    +

    Та же ошибка будет вызвана, если класс был определён перед использованием class declaration.

    var Foo = class {};
     class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
    diff --git a/files/ru/web/javascript/reference/statements/do...while/index.html b/files/ru/web/javascript/reference/statements/do...while/index.html
    index f6707b4b04..6a2aa31f07 100644
    --- a/files/ru/web/javascript/reference/statements/do...while/index.html
    +++ b/files/ru/web/javascript/reference/statements/do...while/index.html
    @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Statements/do...while
     ---
     
    {{jsSidebar("Statements")}}
    -

    Выражение do...while создает цикл, который выполняет указанное выражение до тех пор, пока условие не станет ложным. Условие проверяется после выполнения выражения, то есть выражение выполнится как минимум один раз.

    +

    Выражение do...while создаёт цикл, который выполняет указанное выражение до тех пор, пока условие не станет ложным. Условие проверяется после выполнения выражения, то есть выражение выполнится как минимум один раз.

    {{EmbedInteractiveExample("pages/js/statement-dowhile.html")}}

    @@ -23,7 +23,7 @@ while (условие);
    условие
    -
    Выражение, которое вычисляется после каждого шага цикла. Если условие истинно, то выражение выполняется еще раз. Когда условие ложно, выполняется выражение, следующее после do...while.
    +
    Выражение, которое вычисляется после каждого шага цикла. Если условие истинно, то выражение выполняется ещё раз. Когда условие ложно, выполняется выражение, следующее после do...while.

    Примеры

    diff --git a/files/ru/web/javascript/reference/statements/empty/index.html b/files/ru/web/javascript/reference/statements/empty/index.html index 3792c035bc..64aee27def 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-await...of/index.html b/files/ru/web/javascript/reference/statements/for-await...of/index.html
    index 9ed679ace7..d5a6b93e35 100644
    --- a/files/ru/web/javascript/reference/statements/for-await...of/index.html
    +++ b/files/ru/web/javascript/reference/statements/for-await...of/index.html
    @@ -77,7 +77,7 @@ translation_of: Web/JavaScript/Reference/Statements/for-await...of
     // 1
     // 2
    -

    Для более конкретного примера перебора асинхронного генератора с помощью for await... of, рассмотрим перебор данных из API.  В этом примере сначала создается асинхронный итератор для потока данных, а затем он используется для определения размера ответа от API.

    +

    Для более конкретного примера перебора асинхронного генератора с помощью for await... of, рассмотрим перебор данных из API.  В этом примере сначала создаётся асинхронный итератор для потока данных, а затем он используется для определения размера ответа от API.

    async function* streamAsyncIterator(stream) {
       const reader = stream.getReader();
    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 24d7434f81..18ffee0e24 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 fdf8799529..cd4447e59f 100644 --- a/files/ru/web/javascript/reference/statements/for...of/index.html +++ b/files/ru/web/javascript/reference/statements/for...of/index.html @@ -213,7 +213,7 @@ for (var value of iterable) {

    Для {{jsxref("Statements/for...in", "for...in")}} обход перечисляемых свойств объекта осуществляется в произвольном порядке.

    -

    Для for...of обход происходит в соответствии с тем, какой порядок определен в итерируемом объекте.

    +

    Для for...of обход происходит в соответствии с тем, какой порядок определён в итерируемом объекте.

    Следующий пример показывает различия в работе циклов for...of и for...in при обходе {{jsxref("Array")}}.

    @@ -237,7 +237,7 @@ for (let i of iterable) { console.log(i); // выведет 3, 5, 7 }
    -

    Разберемся шаг за шагом в вышеописанном коде.

    +

    Разберёмся шаг за шагом в вышеописанном коде.

    Object.prototype.objCustom = function() {};
     Array.prototype.arrCustom = function() {};
    @@ -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)) {
    diff --git a/files/ru/web/javascript/reference/statements/for/index.html b/files/ru/web/javascript/reference/statements/for/index.html
    index 6b394ef5a5..080e4e8c61 100644
    --- a/files/ru/web/javascript/reference/statements/for/index.html
    +++ b/files/ru/web/javascript/reference/statements/for/index.html
    @@ -52,7 +52,7 @@ for (; i < 9; i++) {
     }
     
    -

    Как и блок инициализации, блок условия не обязателен. Если пропустите это выражение, вы должны быть уверены, что прервете цикл где-то в теле, а не создадите бесконечный цикл.

    +

    Как и блок инициализации, блок условия не обязателен. Если пропустите это выражение, вы должны быть уверены, что прервёте цикл где-то в теле, а не создадите бесконечный цикл.

    for (var i = 0;; i++) {
        console.log(i);
    diff --git a/files/ru/web/javascript/reference/statements/import/index.html b/files/ru/web/javascript/reference/statements/import/index.html
    index d301e39327..99911d4f33 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 импортирует все значения. Примеры ниже объясняют синтаксис.

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

    @@ -69,13 +69,13 @@ import("/module-name.js").then(module => {…}) // Динамический
    import * as myModule from '/modules/my-module.js';
    -

    В данном случае, доступ к импортируемым значениям можно осуществить с использованием имени модуля (в данном случае "myModule") в качестве пространства имен. Например, если импортируемый выше модуль включает в себя экспорт метода doAllTheAmazingThings(), вы можете вызвать его так:

    +

    В данном случае, доступ к импортируемым значениям можно осуществить с использованием имени модуля (в данном случае "myModule") в качестве пространства имён. Например, если импортируемый выше модуль включает в себя экспорт метода doAllTheAmazingThings(), вы можете вызвать его так:

    myModule.doAllTheAmazingThings();

    Импорт единичного значения из модуля

    -

    Определенное ранее значение, названное myExport, которое было экспортировано из модуля my-module либо неявно (если модуль был экспортирован целиком), либо явно (с использованием инструкции {{jsxref("Statements/export", "export")}}), позволяет вставить myExport в текущую область видимости.

    +

    Определённое ранее значение, названное myExport, которое было экспортировано из модуля my-module либо неявно (если модуль был экспортирован целиком), либо явно (с использованием инструкции {{jsxref("Statements/export", "export")}}), позволяет вставить myExport в текущую область видимости.

    import {myExport} from '/modules/my-module.js';
    @@ -85,7 +85,7 @@ import("/module-name.js").then(module => {…}) // Динамический
    import {foo, bar} from '/modules/my-module.js';
    -

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

    +

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

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

    @@ -117,10 +117,10 @@ import("/module-name.js").then(module => {…}) // Динамический
    import myDefault from '/modules/my-module.js';
     
    -

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

    +

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

    import myDefault, * as myModule from '/modules/my-module.js';
    -// myModule использовано как пространство имен
    +// myModule использовано как пространство имён

или

diff --git a/files/ru/web/javascript/reference/statements/let/index.html b/files/ru/web/javascript/reference/statements/let/index.html index 2f38f7e7ca..df2a17de02 100644 --- a/files/ru/web/javascript/reference/statements/let/index.html +++ b/files/ru/web/javascript/reference/statements/let/index.html @@ -87,7 +87,7 @@ for (var i = 1; i <= 5; i++) {

Пример выше будет выполнен как и ожидается, так как пять экземпляров внутренней функции (анонимной) будут ссылаться на пять разных экземпляров переменной i. Пример будет выполнен неверно, если заменить директиву let на var, или удалить переменную i из параметров вложенной функции и использовать внешнюю переменную i во внутренней функции.

-

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

+

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

var x = 'global_x';
 let y = 'global_y';
@@ -130,16 +130,16 @@ console.log(privateScope.hiddenProperty); // error

Эта техника позволяет получить только "статичное" приватное состояние - в примере выше, все экземпляры полученные из конструктора SomeConstructor будут ссылаться на одну и ту же область видимости privateScope.

-

Временные мертвые зоны и ошибки при использовании let

+

Временные мёртвые зоны и ошибки при использовании let

-

Повторное объявление той же переменной в том же блоке или функции приведет к выбросу исключения SyntaxError.

+

Повторное объявление той же переменной в том же блоке или функции приведёт к выбросу исключения SyntaxError.

if (x) {
   let foo;
   let foo; // SyntaxError thrown.
 }
-

В стандарте ECMAScript 2015 переменные, объявленные директивой let, переносятся в начало блока. Но если вы сошлетесь в блоке на переменную, до того как она объявлена директивой let, то это приведет к выбросу исключения ReferenceError, потому что переменная находится во "временной мертвой зоне" с начала блока и до места ее объявления. (В отличии от переменной, объявленной через var, которая просто будет содержать значение undefined)

+

В стандарте ECMAScript 2015 переменные, объявленные директивой let, переносятся в начало блока. Но если вы сошлётесь в блоке на переменную, до того как она объявлена директивой let, то это приведёт к выбросу исключения ReferenceError, потому что переменная находится во "временной мёртвой зоне" с начала блока и до места её объявления. (В отличии от переменной, объявленной через var, которая просто будет содержать значение undefined)

function do_something() {
   console.log(bar); // undefined
@@ -175,7 +175,7 @@ for ( let i=i ; i < 10 ; i++ ) {
 
for (let expr1; expr2; expr3) statement
 
-

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

+

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

Примеры

@@ -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
  • До SpiderMonkey 46 {{geckoRelease(46)}} выбрасывал {{jsxref("TypeError")}} на повторное объявление, вместо {{jsxref("SyntaxError")}} ({{bug(1198833)}}).
  • -
  • До SpiderMonkey 44 {{geckoRelease(44)}}, let был доступен только для блоков кода обернутых в HTML <script type="application/javascript;version=1.7">block (or higher version) и имел другую семантику.
  • -
  • Поддержка в {{domxref("Worker")}} код спрятан за dom.workers.latestJSVersion флагом ({{bug(487070)}}). Без версии let, флаг будет удален в будущем ({{bug(1219523)}}).
  • +
  • До SpiderMonkey 44 {{geckoRelease(44)}}, let был доступен только для блоков кода обёрнутых в HTML <script type="application/javascript;version=1.7">block (or higher version) и имел другую семантику.
  • +
  • Поддержка в {{domxref("Worker")}} код спрятан за dom.workers.latestJSVersion флагом ({{bug(487070)}}). Без версии let, флаг будет удалён в будущем ({{bug(1219523)}}).
  • Соблюдение стандарта ES2015 для let в SpIderMonkey отслеживается в {{bug(950547)}}
diff --git a/files/ru/web/javascript/reference/statements/return/index.html b/files/ru/web/javascript/reference/statements/return/index.html index 37f44af769..7859580049 100644 --- a/files/ru/web/javascript/reference/statements/return/index.html +++ b/files/ru/web/javascript/reference/statements/return/index.html @@ -25,7 +25,7 @@ translation_of: Web/JavaScript/Reference/Statements/return

Описание

-

При вызове оператора return в функции её выполнение прекращается. Указанное значение возвращается в место вызова функции. Например, приведенная ниже функция возвращает возведенное в квадрат значение своего аргумента, x (где x – это число):

+

При вызове оператора return в функции её выполнение прекращается. Указанное значение возвращается в место вызова функции. Например, приведённая ниже функция возвращает возведённое в квадрат значение своего аргумента, x (где x – это число):

function square(x) {
    return x * x;
diff --git a/files/ru/web/javascript/reference/statements/throw/index.html b/files/ru/web/javascript/reference/statements/throw/index.html
index 1ba0dc149a..7dfceb09c3 100644
--- a/files/ru/web/javascript/reference/statements/throw/index.html
+++ b/files/ru/web/javascript/reference/statements/throw/index.html
@@ -23,7 +23,7 @@ translation_of: Web/JavaScript/Reference/Statements/throw
 
 

Описание

-

Используйте инструкцию throw для генерирования исключения. Когда вы генерируете исключение (throw), выражение задает значение исключения. Каждое из следующих throw создает исключение:

+

Используйте инструкцию throw для генерирования исключения. Когда вы генерируете исключение (throw), выражение задаёт значение исключения. Каждое из следующих throw создаёт исключение:

throw "Error2"; // генерирует исключение, значением которого является строка
 throw 42;       // генерирует исключение, значением которого является число 42
@@ -35,11 +35,11 @@ throw true;     // генерирует исключение, значением
 
 

Пример: Генерирование объекта в качестве исключения

-

Можно указать объект в качестве исключения. Затем можно получить ссылку на этот объект и доступ ко всем его свойствам в блоке catch. Следующий пример создает объект ошибки, который имеет тип UserException, и используется для генерации исключения.

+

Можно указать объект в качестве исключения. Затем можно получить ссылку на этот объект и доступ ко всем его свойствам в блоке catch. Следующий пример создаёт объект ошибки, который имеет тип UserException, и используется для генерации исключения.

function UserException(message) {
    this.message = message;
-   this.name = "Исключение, определенное пользователем";
+   this.name = "Исключение, определённое пользователем";
 }
 function getMonthName(mo) {
    mo = mo-1; // Нужно скорректировать номер месяца согласно индексам массива (1=Jan, 12=Dec)
@@ -54,11 +54,11 @@ function getMonthName(mo) {
 
 try {
    // statements to try
-   var myMonth = 15; // 15 находится вне границ массива, что приведет к исключению
+   var myMonth = 15; // 15 находится вне границ массива, что приведёт к исключению
    var monthName = getMonthName(myMonth);
 } catch (e) {
    monthName = "неизвестен";
-   logMyErrors(e.message, e.name); // передаем исключение в обработчик ошибок
+   logMyErrors(e.message, e.name); // передаём исключение в обработчик ошибок
 }
 
@@ -67,7 +67,7 @@ try {

Следующий пример проверяет, является ли строка, переданная в функцию, почтовым индексом США. Если индекс имеет недопустимый формат, будет сгенерировано исключение посредством создания объекта, имеющего тип ZipCodeFormatException.

/*
- * Создает объект ZipCode.
+ * Создаёт объект ZipCode.
  *
  * Допустимые форматы почтового индекса:
  *    12345
@@ -125,16 +125,16 @@ function verifyZipCode(z) {
    return z;
 }
 
-a = verifyZipCode(95060);         // вернет 95060
-b = verifyZipCode(9560);          // вернет -1
-c = verifyZipCode("a");           // вернет -1
-d = verifyZipCode("95060");       // вернет 95060
-e = verifyZipCode("95060 1234");  // вернет 95060 1234
+a = verifyZipCode(95060);         // вернёт 95060
+b = verifyZipCode(9560);          // вернёт -1
+c = verifyZipCode("a");           // вернёт -1
+d = verifyZipCode("95060");       // вернёт 95060
+e = verifyZipCode("95060 1234");  // вернёт 95060 1234
 

Пример: Повторный выброс исключения

-

Можно использовать throw для повторного выброса исключения после того, как оно было поймано. В следующем примере ловится исключение с числовым значением и делается повторный выброс, если его значение больше 50.  Повторно выброшенное исключение передается далее в вызывающую функцию или до верхнего уровня, который видит пользователь.

+

Можно использовать throw для повторного выброса исключения после того, как оно было поймано. В следующем примере ловится исключение с числовым значением и делается повторный выброс, если его значение больше 50.  Повторно выброшенное исключение передаётся далее в вызывающую функцию или до верхнего уровня, который видит пользователь.

try {
    throw n; // бросаем исключение с числовым значением
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 241bc90d83..a18bf95b37 100644
--- a/files/ru/web/javascript/reference/statements/try...catch/index.html
+++ b/files/ru/web/javascript/reference/statements/try...catch/index.html
@@ -86,7 +86,7 @@ catch (e) {
 }
 
-

Блок catch задает идентификатор (e в примере выше) который содержит объект исключения (в примере выше — значение, переданное оператору throw). Область видимости этого объекта ограничивается блоком catch.

+

Блок catch задаёт идентификатор (e в примере выше) который содержит объект исключения (в примере выше — значение, переданное оператору throw). Область видимости этого объекта ограничивается блоком catch.

Условный блок catch

diff --git a/files/ru/web/javascript/reference/statements/var/index.html b/files/ru/web/javascript/reference/statements/var/index.html index fd0ca7f862..78b2f5edcd 100644 --- a/files/ru/web/javascript/reference/statements/var/index.html +++ b/files/ru/web/javascript/reference/statements/var/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Statements/var ---
{{jsSidebar("Statements")}}
-

Оператор var объявляет переменную, инициализируя ее, при необходимости.

+

Оператор var объявляет переменную, инициализируя её, при необходимости.

{{EmbedInteractiveExample("pages/js/statement-var.html")}}

@@ -80,7 +80,7 @@ bla = 2;

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

-

Важно отметить, что подъем будет влиять на объявление переменной, но не на инициализацию ее значения. Значение присваивается при выполнении оператора присваивания:

+

Важно отметить, что подъем будет влиять на объявление переменной, но не на инициализацию её значения. Значение присваивается при выполнении оператора присваивания:

function do_something() {
   console.log(bar); // выведет undefined
@@ -153,7 +153,7 @@ console.log(x, y);
var x = 0;  // x объявлена глобально, затем присваивается значение 0
 
-console.log(typeof z); // undefined, пока еще z не существует
+console.log(typeof z); // undefined, пока ещё z не существует
 
 function a() { // когда функция a вызвана,
   var y = 2;   // y объявляется локально в функции a, затем присваивается 2
@@ -163,10 +163,10 @@ function a() { // когда функция a вызвана,
   function b() {       // когда функция b вызвана
     x = 3;  // присваивается 3 существующей глобальной x
     y = 4;  // присваивается 4 существующей внешней y
-    z = 5;  // создается новая глобальная переменная z и присваивается значение 5.
+    z = 5;  // создаётся новая глобальная переменная z и присваивается значение 5.
   }         // (Порождает ReferenceError в strict mode(строгом режиме).)
 
-  b();     // вызов b создает z как глобальную переменную
+  b();     // вызов b создаёт z как глобальную переменную
   console.log(x, y, z);  // 3 4 5
 }
 
diff --git a/files/ru/web/javascript/reference/statements/while/index.html b/files/ru/web/javascript/reference/statements/while/index.html
index 1baf54a1f4..4c367fc488 100644
--- a/files/ru/web/javascript/reference/statements/while/index.html
+++ b/files/ru/web/javascript/reference/statements/while/index.html
@@ -9,7 +9,7 @@ translation_of: Web/JavaScript/Reference/Statements/while
 ---
 
{{jsSidebar("Statements")}}
-

Оператор while создает цикл, выполняющий заданную инструкцию, пока истинно проверяемое условие. Логическое значение условия вычисляется перед исполнением тела цикла.

+

Оператор while создаёт цикл, выполняющий заданную инструкцию, пока истинно проверяемое условие. Логическое значение условия вычисляется перед исполнением тела цикла.

Синтаксис

diff --git a/files/ru/web/javascript/reference/statements/with/index.html b/files/ru/web/javascript/reference/statements/with/index.html index 208863d500..e28aedee90 100644 --- a/files/ru/web/javascript/reference/statements/with/index.html +++ b/files/ru/web/javascript/reference/statements/with/index.html @@ -32,7 +32,7 @@ translation_of: Web/JavaScript/Reference/Statements/with

Pro: Оператор with может помочь уменьшить размер файла, уменьшив необходимость повторять длинную ссылку на объект без снижения производительности.  Изменение цепочки контекста, необходимое для 'with', не требует больших вычислительных затрат.  Использование 'with' избавит интерпретатор от разбора повторных ссылок на объекты. Однако, обратите внимание, что во многих случаях это преимущество может быть достигнуто с помощью временной переменной для хранения ссылки на нужный объект.

-

Contra: Оператор with заставляет указанный объект быть найденным сначала среди всех имен поиска.  Поэтому все идентификаторы, которые не относятся к указанному объекту, будут обнаруживаться медленнее в блоке «with.  Там, где важна производительность, «with» следует использовать только для охвата блоков кода, которые обращаются к членам указанного объекта.

+

Contra: Оператор with заставляет указанный объект быть найденным сначала среди всех имён поиска.  Поэтому все идентификаторы, которые не относятся к указанному объекту, будут обнаруживаться медленнее в блоке «with.  Там, где важна производительность, «with» следует использовать только для охвата блоков кода, которые обращаются к членам указанного объекта.

Ambiguity contra

diff --git a/files/ru/web/javascript/reference/strict_mode/index.html b/files/ru/web/javascript/reference/strict_mode/index.html index 7b35f93897..fbf4446b55 100644 --- a/files/ru/web/javascript/reference/strict_mode/index.html +++ b/files/ru/web/javascript/reference/strict_mode/index.html @@ -10,7 +10,7 @@ translation_of: Web/JavaScript/Reference/Strict_mode ---
{{JsSidebar("More")}}
-

Режим strict (строгий режим), введенный в ECMAScript 5, позволяет использовать более строгий вариант JavaScript. Это не просто подмножество языка: в нем сознательно используется семантика, отличающаяся от обычно принятой. Не поддерживающие строгий режим браузеры будут по-другому выполнять код, написанный для строгого режима, поэтому не полагайтесь на строгий режим без тестирования поддержки используемых особенностей этого режима. Строгий и обычный режим могут сосуществовать одновременно, а скрипт может переключаться в строгий режим по мере надобности.

+

Режим strict (строгий режим), введённый в ECMAScript 5, позволяет использовать более строгий вариант JavaScript. Это не просто подмножество языка: в нем сознательно используется семантика, отличающаяся от обычно принятой. Не поддерживающие строгий режим браузеры будут по-другому выполнять код, написанный для строгого режима, поэтому не полагайтесь на строгий режим без тестирования поддержки используемых особенностей этого режима. Строгий и обычный режим могут сосуществовать одновременно, а скрипт может переключаться в строгий режим по мере надобности.

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

@@ -18,11 +18,11 @@ translation_of: Web/JavaScript/Reference/Strict_mode

Активизация строгого режима

-

Строгий режим применяется ко всему скрипту или к отдельным функциям. Он не может быть применён к блокам операторов, заключенных в фигурные скобки -- попытка использовать его в подобном контексте будет проигнорирована. Код в eval, Function, в атрибутах обработчиков событий, в строках, переданных в setTimeout, и т.п. рассматривается как законченный скрипт, и активизация строгого режима в нём выполняется ожидаемым образом.

+

Строгий режим применяется ко всему скрипту или к отдельным функциям. Он не может быть применён к блокам операторов, заключённых в фигурные скобки -- попытка использовать его в подобном контексте будет проигнорирована. Код в eval, Function, в атрибутах обработчиков событий, в строках, переданных в setTimeout, и т.п. рассматривается как законченный скрипт, и активизация строгого режима в нём выполняется ожидаемым образом.

Строгий режим для скриптов

-

Чтобы активизировать строгий режим для всего скрипта, нужно поместить оператор "use strict"; или 'use strict'; перед всеми остальными операторами скрипта (выдержать приведенный синтаксис буквально).

+

Чтобы активизировать строгий режим для всего скрипта, нужно поместить оператор "use strict"; или 'use strict'; перед всеми остальными операторами скрипта (выдержать приведённый синтаксис буквально).

// Синтаксис переключения в строгий режим всего скрипта
 "use strict";
@@ -74,11 +74,11 @@ mistypeVaraible = 17; // mistypedVaraible, эта строка выбросит
 
 
"use strict";
 
-// Присваивание значения глобальной переменной, защищенной от записи
+// Присваивание значения глобальной переменной, защищённой от записи
 var undefined = 5; // выдаст TypeError
 var Infinity = 5; // выдаст TypeError
 
-// Присваивание значения свойству, защищенному от записи
+// Присваивание значения свойству, защищённому от записи
 var obj1 = {};
 Object.defineProperty(obj1, "x", { value: 42, writable: false });
 obj1.x = 9; // выдаст TypeError
@@ -133,7 +133,7 @@ var sum = 015 + // !!! синтаксическая ошибка
 console.log(sumWithOctal); // 16
 
-

В-седьмых, строгий режим в ECMAScript 2015 запрещает установку свойств {{Glossary("primitive")}} значениям. Без строгого режима, установка свойств просто игнорируется (no-op), со строгим режимом, однако, выдает {{jsxref ("TypeError")}}.

+

В-седьмых, строгий режим в ECMAScript 2015 запрещает установку свойств {{Glossary("primitive")}} значениям. Без строгого режима, установка свойств просто игнорируется (no-op), со строгим режимом, однако, выдаёт {{jsxref ("TypeError")}}.

(function() {
 'use strict';
@@ -146,7 +146,7 @@ false.true = '';         // TypeError
 
 

Упрощение работы с переменными

-

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

+

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

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

@@ -206,7 +206,7 @@ eval('var y; delete y;'); // !!!
синтаксическая ошибк

Упрощение eval и arguments

-

В строгом режиме снижается количество странностей в поведении arguments и eval, оба из которых примешивают определённое количество магии в обычный код. Так eval добавляет или удаляет переменные и меняет их значения, а переменная arguments может удивить своими проиндексированными свойствами, которые являются ссылками (синонимами) для поименованных аргументов функции. Строгий режим делает большой шаг в прояснении этих двух ключевых слов, но полное их обуздание произойдет лишь в следующей редакции ECMAScript.

+

В строгом режиме снижается количество странностей в поведении arguments и eval, оба из которых примешивают определённое количество магии в обычный код. Так eval добавляет или удаляет переменные и меняет их значения, а переменная arguments может удивить своими проиндексированными свойствами, которые являются ссылками (синонимами) для поименованных аргументов функции. Строгий режим делает большой шаг в прояснении этих двух ключевых слов, но полное их обуздание произойдёт лишь в следующей редакции ECMAScript.

Во-первых, ключевые слова eval и arguments не могут быть переопределены или изменены. Все подобные попытки это сделать являются синтаксическими ошибками:

@@ -235,7 +235,7 @@ console.assert(pair[0] === 42); console.assert(pair[1] === 17);
-

В-третьих, свойство arguments.callee больше не поддерживается. В обычном коде свойство arguments.callee ссылается на саму функцию для вызова которой и был создан объект arguments. Малоприменимое свойство, так как функция заранее известна, и к ней можно обратиться и по ее имени непосредственно. Более того, arguments.callee значительно затрудняет такую оптимизацию, как инлайнинг, потому как должна быть сохранена возможность обратиться к незаинлайненой функции на случай, если присутствует обращение к arguments.callee. В строгом режиме arguments.callee превращается в неудаляемое свойство, которое выбрасывает предостерегающее исключение при любой попытке обращения к нему:

+

В-третьих, свойство arguments.callee больше не поддерживается. В обычном коде свойство arguments.callee ссылается на саму функцию для вызова которой и был создан объект arguments. Малоприменимое свойство, так как функция заранее известна, и к ней можно обратиться и по её имени непосредственно. Более того, arguments.callee значительно затрудняет такую оптимизацию, как инлайнинг, потому как должна быть сохранена возможность обратиться к незаинлайненой функции на случай, если присутствует обращение к arguments.callee. В строгом режиме arguments.callee превращается в неудаляемое свойство, которое выбрасывает предостерегающее исключение при любой попытке обращения к нему:

"use strict";
 var f = function() { return arguments.callee; };
@@ -244,7 +244,7 @@ f(); // выдаст TypeError
 
 

"Безопасный" JavaScript

-

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

+

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

Во-первых, значение, передаваемое в функцию как this, в строгом режиме не приводится к объекту (не "упаковывается"). В обычной функции this всегда представляет собой объект: либо это непосредственно объект, в случае вызова с this, представляющим объект-значение; либо значение, упакованное в объект, в случае вызова с this типа Boolean, string, или number; либо глобальный объект, если тип this это undefined или null. (Для точного определения конкретного this используйте {{jsxref('Global_Objects/Function/call', 'call')}}, {{jsxref('Global_Objects/Function/apply', 'apply')}}, или {{jsxref('Global_Objects/Function/bind', 'bind')}}.) Автоматическая упаковка не только снижает производительность, но и выставляет на показ глобальный объект, что в браузерах является угрозой безопасности, потому что глобальный объект предоставляет доступ к функциональности, которая должна быть ограничена в среде "безопасного" JavaScript. Таким образом, для функции в строгом режиме точно определённый this не упаковывается в объект, а если не определён точно, this является undefined:

@@ -304,7 +304,7 @@ function fun(static) { 'use strict'; } // !!!
-

Два замечания, специфичных для Mozilla: Первое, если ваш код создан на JavaScript 1.7 или выше (например, chrome code, или тег <script type=""> заполнен правильно), и применен строгий режим, то let и yield имеют ту же функциональность, которая у них была изначально, когда они только появились. Однако в веб, в строгом коде загруженном через <script src=""> или <script>...</script>, нельзя будет использовать let/yield в качестве идентификаторов. Второе, в то время как ES5 зарезервировал слова class, enum, export, extends, import и super для любого режима, в Firefox 5 Mozilla они были зарезервированы намного раньше и лишь для строгого режима.

+

Два замечания, специфичных для Mozilla: Первое, если ваш код создан на JavaScript 1.7 или выше (например, chrome code, или тег <script type=""> заполнен правильно), и применён строгий режим, то let и yield имеют ту же функциональность, которая у них была изначально, когда они только появились. Однако в веб, в строгом коде загруженном через <script src=""> или <script>...</script>, нельзя будет использовать let/yield в качестве идентификаторов. Второе, в то время как ES5 зарезервировал слова class, enum, export, extends, import и super для любого режима, в Firefox 5 Mozilla они были зарезервированы намного раньше и лишь для строгого режима.

Во-вторых, в строгом режиме запрещается объявление функций глубже самого верхнего уровня скрипта или функции. В обычном коде в браузерах, объявление функций позволено "везде", что не является частью ES5 (или даже ES3!) Это расширение различных браузеров, не имеющее общего совместимого подхода. Есть надежда, что в последующих редакциях ECMAScript будет определена новая семантика для объявления функций вне верхнего уровня скрипта или функции. Запрет на объявление таких функций в строгом режиме производит "зачистку" для спецификации в будущем релизе ECMAScript:

@@ -326,7 +326,7 @@ function baz() { // верно

Строгий режим в браузерах

-

В большинстве браузеров в настоящее время строгий режим реализован. Однако не стоит впадать в слепую зависимость от него, потому что существует множество Версий браузеров, поддерживающих строгий режим лишь частично или вовсе не поддерживающих оный (например, Internet Explorer ниже версии 10!). Строгий режим изменяет семантику. Надежда на эти изменения приведет к ошибкам и погрешностям в браузерах, в которых строгий режим не реализован. Проявляйте осторожность при использовании строгого режима, и подкрепляйте надежность строгого режима тестами особенностей, которые проверяют, насколько верно реализованы его фрагменты. Наконец, старайтесь тестировать свой код в браузерах, как поддерживающих, так и не поддерживающих строгий режим. Если вы проводите тестирование только в тех браузерах, которые не поддерживают строгий режим, то вполне вероятно у вас появятся проблемы в браузерах, его поддерживающих, и наоборот.

+

В большинстве браузеров в настоящее время строгий режим реализован. Однако не стоит впадать в слепую зависимость от него, потому что существует множество Версий браузеров, поддерживающих строгий режим лишь частично или вовсе не поддерживающих оный (например, Internet Explorer ниже версии 10!). Строгий режим изменяет семантику. Надежда на эти изменения приведёт к ошибкам и погрешностям в браузерах, в которых строгий режим не реализован. Проявляйте осторожность при использовании строгого режима, и подкрепляйте надёжность строгого режима тестами особенностей, которые проверяют, насколько верно реализованы его фрагменты. Наконец, старайтесь тестировать свой код в браузерах, как поддерживающих, так и не поддерживающих строгий режим. Если вы проводите тестирование только в тех браузерах, которые не поддерживают строгий режим, то вполне вероятно у вас появятся проблемы в браузерах, его поддерживающих, и наоборот.

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

diff --git a/files/ru/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html b/files/ru/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html index 5447834c4b..4c4b882462 100644 --- a/files/ru/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html +++ b/files/ru/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html @@ -8,7 +8,7 @@ translation_of: Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mod ---
{{jsSidebar("More")}}
-

В ECMAScript 5 введен {{jsxref('Strict_mode', 'строгий режим')}}, который реализован во всех основных браузерах (включая IE10). В то время как включение интерпретации браузерами кода в строгом режиме делается очень просто (достаточно добавить "use strict"; в верхней части вашего исходного кода), для адаптации уже существующего кода к строгому режиму потребуется немного больше работы.

+

В ECMAScript 5 введён {{jsxref('Strict_mode', 'строгий режим')}}, который реализован во всех основных браузерах (включая IE10). В то время как включение интерпретации браузерами кода в строгом режиме делается очень просто (достаточно добавить "use strict"; в верхней части вашего исходного кода), для адаптации уже существующего кода к строгому режиму потребуется немного больше работы.

Цель этой статьи: предоставить для разработчиков руководство по переходу к строгому режиму.

@@ -105,15 +105,15 @@ s.opacity = 1;

this в вызовах функции

-

В функциях как f(), значением this является глобальный объект. В строгом режиме он теперь равен undefined. Когда функция вызывалась с помощью {{jsxref('Global_Objects/Function/call', 'call')}} или {{jsxref('Global_Objects/Function/apply', 'apply')}}, если значением был примитив, он упаковывался в соответствующий объект (или в глобальный объект для undefined и null). В строгом режиме значение передается без каких-либо преобразований и замен.

+

В функциях как f(), значением this является глобальный объект. В строгом режиме он теперь равен undefined. Когда функция вызывалась с помощью {{jsxref('Global_Objects/Function/call', 'call')}} или {{jsxref('Global_Objects/Function/apply', 'apply')}}, если значением был примитив, он упаковывался в соответствующий объект (или в глобальный объект для undefined и null). В строгом режиме значение передаётся без каких-либо преобразований и замен.

arguments не является псевдонимом именованных аргументов функции

-

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

+

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

Изменения в eval

-

В строгом режиме eval не создает новой переменной в той области видимости, где был вызван. Также, конечно, в строгом режиме, строка выполняется с правилами строгого режима. Потребуется провести тщательное тестирование, чтобы убедиться, что ничего не сломалось. Не использовать eval, если он вам действительно не нужен, может быть другим прагматичным решением.

+

В строгом режиме eval не создаёт новой переменной в той области видимости, где был вызван. Также, конечно, в строгом режиме, строка выполняется с правилами строгого режима. Потребуется провести тщательное тестирование, чтобы убедиться, что ничего не сломалось. Не использовать eval, если он вам действительно не нужен, может быть другим прагматичным решением.

Строго-нейтральный код

-- cgit v1.2.3-54-g00ecf