diff --git a/guide/russian/javascript/arguments/index.md b/guide/russian/javascript/arguments/index.md
index 0a53d69dbfb..391546466e9 100644
--- a/guide/russian/javascript/arguments/index.md
+++ b/guide/russian/javascript/arguments/index.md
@@ -2,52 +2,73 @@
title: Arguments
localeTitle: аргументы
---
-Объект arguments - это **объект, подобный массиву** _(в том, что структура объекта аналогична структуре массива, однако он не должен рассматриваться как массив, поскольку он обладает всеми функциональными возможностями объекта), в_ котором хранятся все аргументы, которые вы передается функции и, в частности, принадлежит этой функции. Если вы должны были передать 3 аргумента функции, скажем, `storeNames()` , эти 3 аргумента будут храниться внутри объекта с **аргументами,** и это будет выглядеть так, когда мы передадим аргументы `storeNames("Mulder", "Scully", "Alex Krycek")` к нашей функции:
+Объект arguments - это **объект, подобный массиву** _(в том, что структура объекта аналогична структуре массива, однако он не должен рассматриваться как массив, поскольку он обладает всеми функциональными возможностями объекта)_ , вкотором хранятся все аргументы, которые вы передается функции и, в частности, принадлежит этой функции. Если вы должны были передать 3 аргумента функции, скажем, `storeNames()` , эти 3 аргумента будут храниться внутри объекта с **аргументами,** и это будет выглядеть так, когда мы передадим аргументы `storeNames("Mulder", "Scully", "Alex Krycek")` к нашей функции:
* Сначала мы объявляем функцию и возвращаем объект arguments.
-\`\` \`Javascript
+```Javascript
function storeNames () {return arguments; }
```
-* Then, when we execute that function with **n arguments**, 3 in this case, it will return the object to us and it will **look like** an array. We can convert it to an array, but more on that later...
+
+*Затем, когда мы выполним функцию с **n количеством аргументов***, в нашем случае 3 аргумента, нам вернтся объект, который будет ***выглядеть как массив***. Мы можем превратить его в массив, но об этом позже...
+
+```Javascript
+// Если мы выполним следующую строку в консоли:
+storeNames ('Малдер', 'Скалли', 'Алекс Крайчек');
+// Вывод будет {'0': 'Малдер', '1': 'Скалли', '2': 'Alex Kryceck'}
```
-Javascript // Если мы выполним следующую строку в консоли: storeNames («Малдер», «Скалли», «Алекс Крайчек»); // Выход будет {'0': 'Mulder', '1': 'Scully', '2': 'Alex Kryceck'}
-```
+Если вы хотите узнать больше, например, о превращении в массив или о проблеме оптимизации при использовании метода _slice_(_) и о том, как её решить, кликайте **read more** (Только для Gitter Chat).
If you want to know more about this, such as converting it to an array or the optimization problem that comes with using the _slice(_) method and how to solve it, click on **read more** (Gitter Chat Only).
- ## Treat it as an array
+ ## Относитесь к arguments, как к массиву
- You can invoke arguments by using `arguments[n]` (where _n_ is the index of the argument in the array-like object) but if you want to use it as an array for iteration purposes or applying array methods to it, you need to _convert it to an array_ by declaring a variable and using the Array.prototype.slice.call method (because _arguments_ is not an array):
+ Вы можете вызвать arguments с помощью `arguments[n]` (где _n_ это индекс аргумента в объекте подобном массиву), но если вы хотите использовать его, как массив для применения циклов или методов массивов к нему, нужно _превратить его в массив_ объявив переменную и используя метод Array.prototype.slice.call (потому, что _arguments_ это не массив):
+
+```javascript
+var args = Array.prototype.slice.call(arguments);
+
+// или способ es6:
+var args = Array.from(arguments)
+```
+Поскольку **slice()** имеет (параметр **end** необязательный) два параметра, вы можете захватить определенную часть arguments уточнив (при сипользовании метода _slice.call()_ оба этих параметра необязательны, не только _end_) начало и окончание нужной части; обратите внимание на следующий код:
+
+```javascript
+function getGrades() {
+ var args = Array.prototype.slice.call(arguments, 1, 3);
+ return args;
+}
+
+// Теперь выведем это!
+console.log(getGrades(90, 100, 75, 40, 89, 95));
+
+// ВЫВОД ДОЛЖЕН БЫТЬ ТАКИМ: //
+// [100, 75] <- Почему? Потому, что он начинался с индекса 1 и останавливался при индексе 3
+// поэтому индекс 3 (40) не был учтен.
+//
+// Если мы удалим параметр «3», оставив только (arguments, 1), мы получим
+// каждый аргумент из индекса 1: \[100, 75, 40, 89, 95\].
```
-Javascript var args = Array.prototype.slice.call (аргументы);
+### Проблемы Оптимизации с Array.slice()
-// или способ es6: var args = Array.from (аргументы)
-```
-Since **slice()** has two (the parameter **end** is optional) parameters, you can grab a certain portion of the arguments by specifying (using the _slice.call()_ method renders these two parameters optional, not just _end_) the beginning and the ending of your portion; check out the following code:
-```
+Есть маленькая проблема, не рекомендуется использовать _slice_ в объекте arguments (по причинам оптимизации)...
-Javascript функция getGrades () { var args = Array.prototype.slice.call (аргументы, 1, 3); return args; }
+> **Важно**: Не следует использовать _slice_ с arguments потому, что не сработает оптимозация в движках JavaScript (напр. V8).
+Вместо этого попробуйте создвть новый массив запустив цикл через объект arguments.
+>
+ > _согласно_ **_Mozilla Developer Network_** (reference)
-// Давайте выводим это! console.log (getGrades (90, 100, 75, 40, 89, 95));
-
-// ВЫХОД ДОЛЖЕН БЫТЬ: // // \[100, 75\] <- Почему? Поскольку он начинался с индекса 1 и останавливался при индексе 3 // поэтому индекс 3 (40) не был учтен. // // Если мы удалим параметр «3», оставив только (аргументы, 1), мы получим // каждый аргумент из индекса 1: \[100, 75, 40, 89, 95\].
-```
-### Optimization issues with Array.slice()
-
- There is a little problem, it's not recommended to use slice in the arguments object (optimization reasons)...
-
- > **Important**: You should not slice on arguments because it prevents optimizations in JavaScript engines (V8 for example). Instead, try constructing a new array by iterating through the arguments object.
- >
- > _by_ **_Mozilla Developer Network_** (reference)
-
- So, what other method is available to convert _arguments_ to an array? I recommend the for-loop (not the for-in loop), you can do it like this:
-```
+Итак, какие еще методы доступны для превращения _arguments_ в массив? Я рекомендую цикл for (не for-in), можете сделать так:
-Javascript var args = \[\]; // Пустой массив, сначала. for (var i = 0; i console.log(arg));
- }
+ args.forEach(arg => console.log(arg));
+}
```
-обратите внимание, что мы также использовали функцию стрелки для сокращения обратного вызова forEach!
+Обратите внимание, что мы также использовали стрелочную функцию для сокращения обратного вызова forEach!
-Объект arguments недоступен внутри тела функции стрелки.
+Объект arguments недоступен внутри тела стрелочной функции.
Параметр rest всегда должен быть последним аргументом в определении вашей функции.
-`function getIntoAnArgument(arg1, arg2, arg3, ...restOfArgs /*no more arguments allowed here*/) { //function body }`
\ No newline at end of file
+```
+function getIntoAnArgument(arg1, arg2, arg3, ...restOfArgs /*no more arguments allowed here*/) {
+ //function body
+}
+```