From 841aae260382e2bf5ebb44d765d8c7301d27caab Mon Sep 17 00:00:00 2001
From: Alexey Istomin Однако, если определен ваш собственный конструктор и ваш класс является производным от какого-либо родительского класса, то вы должны явно объявить конструктор родительского класса, используя Однако, если определён ваш собственный конструктор и ваш класс является производным от какого-либо родительского класса, то вы должны явно объявить конструктор родительского класса, используя Здесь прототип Square класса изменен, но в то же время constructor предыдущего базового класса Polygon вызывается при создании нового экземпляра Square. Здесь прототип Square класса изменён, но в то же время constructor предыдущего базового класса Polygon вызывается при создании нового экземпляра Square. {{Compat("javascript.classes.constructor")}} Тело класса — это часть кода, заключенная в фигурные скобки Тело класса — это часть кода, заключённая в фигурные скобки Если мы напишем этот же код используя классы основанные на функциях, тогда произойдет автоупаковка основанная на значении this, в течение которого функция была вызвана. В строгом режиме автоупаковка не произойдет - значение this останется прежним. Если мы напишем этот же код используя классы основанные на функциях, тогда произойдёт автоупаковка основанная на значении this, в течение которого функция была вызвана. В строгом режиме автоупаковка не произойдёт - значение this останется прежним. Используя Javascript синтаксис определения полей, приведенный выше пример может быть изменен следующим образом: Используя Javascript синтаксис определения полей, приведённый выше пример может быть изменён следующим образом: Предыдущий пример может быть изменен следующим образом, используя приватные поля: Предыдущий пример может быть изменён следующим образом, используя приватные поля: Приватные поля могут быть объявлены только заранее в объявлении поля. Приватные поля не могут быть созданы позже путем присваивания им значения, в отличии от обычных свойств. Приватные поля не могут быть созданы позже путём присваивания им значения, в отличии от обычных свойств. Более подробно об этом написано в Приватные поля класса. Класс не может быть переопределен. Попытка этого приведет к Класс не может быть переопределён. Попытка этого приведёт к Если мы запускаете код в веб браузере, к примеру в Firefox Web Console (Tools > Web Developer > Web Console) и вы используете ('Run') определение класса с одним и тем же именем дважды, вы получите Приватные поля доступны в конструкторе класса изнутри самой декларации класса. Ограничение статических переменных, вызываемых только статическими методами, все еще сохраняется. Ограничение статических переменных, вызываемых только статическими методами, все ещё сохраняется. Приватные методы экземпляров это методы, доступные у экземпляров класса, доступ к которым запрещен также, как у приватных полей класса. Приватные методы экземпляров это методы, доступные у экземпляров класса, доступ к которым запрещён также, как у приватных полей класса. Внутри методов экземпляра, 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
-Constructors по умолчанию.
@@ -190,7 +190,7 @@ console.log(newInstance.name); //PolygonСовместимость с браузерами
-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.name = name;
}
Animal.prototype.speak = function () {
- console.log(`${this.name} издает звук.`function Animal() { }
@@ -199,7 +199,7 @@ 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(); // Митци лаетПубличные поля
-class Rectangle {
height = 0;
@@ -216,7 +216,7 @@ Rectangle.prototype.prototypeWidth = 25;
Приватные поля
-class Rectangle {
#height = 0;
@@ -233,7 +233,7 @@ Rectangle.prototype.prototypeWidth = 25;
);
+ console.log(`${this.name} издаёт звук.`);
}
class Dog extends Animal {
@@ -290,7 +290,7 @@ d.speak(); // Митци лает
+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(); // Митци издает звук.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 .SyntaxError: redeclaration of let ClassName;. (Обсуждение по ошибке можно посмотреть в {{Bug(1428672)}}.) Chrome Developer Tools возвращает сообщение типа Uncaught SyntaxError: Identifier 'ClassName' has already been declared at <anonymous>:1:1.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());
Поддержка в браузерах
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад в данные, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам запрос на слияние.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад в данные, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам запрос на слияние.
{{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 символов.
-Наиболее распространенные основания систем счисления:
+Наиболее распространённые основания систем счисления:
В коде есть недопустимые флаги регулярных выражений. Литерал в регулярном выражении, который содержит шаблон заключенный между двумя слешами, флаги определяются после второго флага. Они также могут быть объявлены в конструкторе функции {{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 не могут существовать вне функции, поскольку они завершают (или останавливают и возобновляют) её исполнение и указывают значение, возвращаемое в место, откуда она была вызвана.
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 до того, как им было присвоено значение.
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());
Для улучшения использования памяти и предотвращения утечек памяти Firefox запрещает надстройкам сохранять строгие ссылки на объекты DOM после уничтожения родительского документа. Мертвый объект содержит сильную ссылку (keep alive) на элемент DOM, который сохраняется даже после того, как он был уничтожен в DOM. Чтобы избежать этих проблем, ссылки на узлы DOM во внешнем документе должны храниться в объекте, который относится к этому документу, и очищаться при выгрузке документа или храниться как слабые ссылки.
+Для улучшения использования памяти и предотвращения утечек памяти Firefox запрещает надстройкам сохранять строгие ссылки на объекты DOM после уничтожения родительского документа. Мёртвый объект содержит сильную ссылку (keep alive) на элемент DOM, который сохраняется даже после того, как он был уничтожен в DOM. Чтобы избежать этих проблем, ссылки на узлы DOM во внешнем документе должны храниться в объекте, который относится к этому документу, и очищаться при выгрузке документа или храниться как слабые ссылки.
-Components.utils предлагает isDeadWrapper()метод, который может использовать привилегированный код.
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_onlyTypeError: назначение свойств только для чтения не допускается в строгом режиме (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.definePropertyThe {{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, то есть диапазон целых чисел от
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;0до0x10FFFF.В Обещаниях (Promises)
-В случае, когда возвращается незамедлительно разрешенное или незамедлительно отклоненное Обещание, Вам не нужно создавать новое Обещание new Promise(...) и работать с ним.
+В случае, когда возвращается незамедлительно разрешённое или незамедлительно отклонённое Обещание, Вам не нужно создавать новое Обещание new Promise(...) и работать с ним.
Это неправильно (конструктор Обещания вызывается неправильно) и будет вызывать исключение
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"TypeError: this is not a constructor:Неправильная зона доступности
-Переменная должна быть доступна в текущем контексте исполнения. Переменные, определенные внутри функции не могут быть доступны из любой точки за пределами функции, так как переменная определена только в области видимости самой функции.
+Переменная должна быть доступна в текущем контексте исполнения. Переменные, определённые внутри функции не могут быть доступны из любой точки за пределами функции, так как переменная определена только в области видимости самой функции.
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/Переменные_скрываreturn args.join(separator); }-
То же имя переменной происходит в качестве параметра функции, и затем повторно объявляется с помощью назначения 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.
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]);var b = new Function("", "alert(typeof arguments.callee)");Вы можете передать любое количество аргументов в эту функцию. Она создает строку, используя каждый аргумент:
+Вы можете передать любое количество аргументов в эту функцию. Она создаёт строку, используя каждый аргумент:
// возвращает "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:} zoo(10); // 100function bar(a=1) { arguments[0] = 100; @@ -164,7 +164,7 @@ myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");На самом деле, если оставшиеся параметры, параметры по умолчанию или деструктурированные параметры не используются, формальные аргументы будут ссылаться на последние значения объекта
+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")}}. Однако в некоторых случаях может быть полезно задать иное значение по умолчанию. Именно для таких случаев предназначены параметры по умолчанию.В прошлом для проверки параметров и задания их значений по умолчанию использовался код в теле функции, в котором проверялось, не равны ли значения параметров
@@ -47,7 +47,7 @@ multiply(5, 2); // 10 multiply(5); // 5undefined.С появлением в 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")}} между ними есть тонкая разница.При использовании
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/Определение_метgetсвойство будет определено в прототипе объекта, в то время, как при использовании {{jsxref ("Object.defineProperty ()")}} свойство будет определено в экземпляре, к которому применяется.Сокращение методов-генераторов
-Методы-генераторы также могут быть определены используя короткий синтаксис. Обратите внимание, что звездочка (*) в коротком синтаксисе должна быть перед именем свойства генератора. То есть,
+* 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.Удаление сеттера оператором
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]deleteСовместимость с браузерами
-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Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.{{Compat("javascript.builtins.Array.concat")}}
Описание
-Метод
+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вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.Функция
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" }]callbackвызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.Совместимость с браузерами
-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)Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.{{Compat("javascript.builtins.Array.fill")}}
Совместимость с браузерами
-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Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.{{Compat("javascript.builtins.Array.filter")}}
Метод
-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
callbackcurrentValueСледующий пример приведен только для целей обучения. Если вы хотите выравнять массив с помощью встроенных методов, вы можете использовать {{jsxref("Array.prototype.flat()")}}
+Следующий пример приведён только для целей обучения. Если вы хотите выравнять массив с помощью встроенных методов, вы можете использовать {{jsxref("Array.prototype.flat()")}}
function flatten(arr) {
const result = []
@@ -370,7 +370,7 @@ if (!Array.prototype.forEach) {
Совместимость с браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
{{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]
Совместимость с браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
{{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) {
Совместимость с браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
{{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) {
Совместимость с браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправите нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправите нам pull request.
{{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) {
Совместимость с браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
{{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) // ['три', 'два', 'один']
Совместимость с браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
{{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).Новый массив, содержащий извлеченные элементы.
+Новый массив, содержащий извлечённые элементы.
{{Compat("javascript.builtins.Array.slice")}}
Метод 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 вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.
Отсортированный массив. Важно, что копия массива не создается - массив сортируется на месте.
+Отсортированный массив. Важно, что копия массива не создаётся - массив сортируется на месте.
Объект ArrayBuffer используется для работы с бинарными данными. Он представляет собой ссылку на поток "сырых" двоичных данных, однако работать с ними напрямую возможности не дает. Вместо этого, вы можете создать типизированный массив или объект {{jsxref("DataView")}}, который можно использовать для чтения и записи данных в ArrayBuffer.
Объект ArrayBuffer используется для работы с бинарными данными. Он представляет собой ссылку на поток "сырых" двоичных данных, однако работать с ними напрямую возможности не даёт. Вместо этого, вы можете создать типизированный массив или объект {{jsxref("DataView")}}, который можно использовать для чтения и записи данных в ArrayBuffer.
Новый объект ArrayBuffer определенного размера. Изначально содержимое равно 0.
Новый объект ArrayBuffer определённого размера. Изначально содержимое равно 0.
Конструктор ArrayBuffer создает новый ArrayBuffer установленного в байтах размера.
Конструктор ArrayBuffer создаёт новый ArrayBuffer установленного в байтах размера.
true если arg – одно из представлений ArrayBuffer, например типизированный массив или {{jsxref("DataView")}}. Вернет false в остальных случаях.true если arg – одно из представлений ArrayBuffer, например типизированный массив или {{jsxref("DataView")}}. Вернёт false в остальных случаях.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);
Метод slice() вернет новый ArrayBuffer, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).
Метод slice() вернёт новый ArrayBuffer, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).
Конструктор 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/AsyncFunctionarg1, arg2, ... argNx", "theValue", или "a,b". x", "theValue", или "a,b". functionBodyОбъекты {{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 ---Статический метод Atomics.add() добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.
Статический метод Atomics.add() добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдёт, пока изменённое значение не будет записано обратно.
typedArrayindextypedArray для добавления value.valueКогда память разделена, несколько потоков могут читать и записывать одни и те же данные в память. Атомарные операции гарантируют, что ожидаемые значения будут записаны и прочитаны, а операции завершены, прежде чем следующая операция начнет свою работу, и они не будут прерваны.
+Когда память разделена, несколько потоков могут читать и записывать одни и те же данные в память. Атомарные операции гарантируют, что ожидаемые значения будут записаны и прочитаны, а операции завершены, прежде чем следующая операция начнёт свою работу, и они не будут прерваны.
wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определенное состояние не станет true, и обычно используется как блокирующие конструкции.
wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определённое состояние не станет true, и обычно используется как блокирующие конструкции.
Проверяет, содержится в указанной позиции массива все еще представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенте, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке браузера).
Проверяет, содержится в указанной позиции массива все ещё представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенте, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке браузера).
До 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)}}).Статический метод Atomics.sub() вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.
Статический метод Atomics.sub() вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная операция гарантирует, что никакой другой записи не произойдёт, пока изменённое значение не будет записано обратно.
typedArrayindextypedArray для добавления value.value{{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 не меняет код или не ожидайте от функции определённого имени.
\n |
- Где Где Например, шаблон |
@@ -380,7 +380,7 @@ var re = new RegExp('\\w+');
| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | -Определяет работу TypedArray и ArrayBufferView. Заменен в ECMAScript 6. |
+ Определяет работу TypedArray и ArrayBufferView. Заменён в ECMAScript 6. |
| {{SpecName('ES6', '#sec-typedarray-objects', 'TypedArray Objects')}} | 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
[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 ---Объект 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/TableWebAssembly.Table()Table.Table.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.
Одно из нововведений стандарта ECMAScript 2015 - протоколы перебора, которые могут реализованы любым объектом, соблюдая при этом определенные правила.
+Одно из нововведений стандарта ECMAScript 2015 - протоколы перебора, которые могут реализованы любым объектом, соблюдая при этом определённые правила.
Протокол "Итератор" определяет стандартный способ получения последовательности значений (конечной или бесконечной).
-Объект является итератором, если в нем определен метод next() , реализующий следующую логику:
+Объект является итератором, если в нем определён метод next() , реализующий следующую логику:
| Pipeline operator draft | Этап 1 | -Еще не включен в спецификацию ECMAScript. | +Ещё не включён в спецификацию ECMAScript. |
С spread syntax вышеприведенное можно записать как:
+С spread syntax вышеприведённое можно записать как:
function myFunction(x, y, z) { }
var args = [0, 1, 2];
@@ -58,7 +58,7 @@ myFunction(-1, ...args, 2, ...[3]);
Вызывая конструктор через ключевое слово 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"]-
Аналогично развертыванию в массиве аргументов, ... может быть использован повсеместно и многократно в литерале массива.
Аналогично развёртыванию в массиве аргументов, ... может быть использован повсеместно и многократно в литерале массива.
С использованием 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()
Поддержка браузерами
-Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
+Таблица совместимости на этой странице создаётся из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с https://github.com/mdn/browser-compat-data и отправить нам pull request.
{{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, в порядке их создания. Он не выводит значения 3, 5, 7 и hello поскольку они не являются перечисляемыми, фактически они вообще не являются свойствами, они являются значениями. Выводятся же имена свойств и методов, например arrCustom и objCustom. Если вы еще не совсем поняли, по каким свойствам осуществляется обход, вот дополнительное объяснение того, как работает {{jsxref("Statements/for...in", "array iteration and for...in", "#Array_iteration_and_for...in")}} .
+Цикл выводит только перечисляемые свойства объекта iterable, в порядке их создания. Он не выводит значения 3, 5, 7 и 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