Skip to content

Commit 205fd6a

Browse files
authored
Update article.md
1 parent 76db165 commit 205fd6a

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

1-js/05-data-types/04-array/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ arr.push("Груша"); // массив меняется по ссылке
205205
alert( fruits ); // Банан, Груша - теперь 2 элемента
206206
```
207207

208-
...Но то, что действительно делает массивы особенными - это их внутреннее представление. Программа старается хранить элементы массива в виде непрерывной области памяти, один за другим, так, как это показано на иллюстрациях к этой главе. Существуют и другие способы оптимизации, заставляющие массив работать действительно быстро.
208+
...Но то, что действительно делает массивы особенными - это их внутреннее представление. Движок JavaScript старается хранить элементы массива в непрерывной области памяти, один за другим, так, как это показано на иллюстрациях к этой главе. Существуют и другие способы оптимизации, благодаря которым массивы работают очень быстро.
209209

210210
Но все они утратят эффективность, если мы перестанем работать с массивом, как с «упорядоченной коллекцией данных», и начнем использовать его как обычный объект.
211211

@@ -221,7 +221,7 @@ fruits.age = 25; // создаём свойство с произвольным
221221

222222
Это возможно, потому что в основе массива лежит объект. Мы можем присвоить ему любые свойства.
223223

224-
Но программа поймет, что мы работаем с массивом, как с обычным объектом. Способы оптимизации, используемые для массивов, в этом случае не подходят и поэтому они будут отключены и никакой выгоды не принесут.
224+
Но движок поймёт, что мы работаем с массивом, как с обычным объектом. Способы оптимизации, используемые для массивов, в этом случае не подходят и поэтому они будут отключены и никакой выгоды не принесут.
225225

226226
Варианты неправильного применения массива:
227227

@@ -314,9 +314,9 @@ for (let key in arr) {
314314

315315
1. Цикл `for..in` выполняет перебор *всех свойств* объекта, а не только цифровых.
316316

317-
В браузере и других программных средах также существуют так называемые "массивоподобные" объекты, которые *выглядят, как массив*. Это означает, у них есть свойство `length` и индексы, но также они могут иметь дополнительные нечисловые свойства и методы, которые нам обычно не нужны. Тем не менее, цикл `for..in` выведет и их. Поэтому, если нам приходится иметь дело с объектами, похожими на массив, такие "лишние" свойства могут стать проблемой.
317+
В браузере и других программных средах также существуют так называемые "псевдомассивы" - объекты, которые *выглядят, как массив*. То есть, у них есть свойство `length` и индексы, но также они могут иметь дополнительные нечисловые свойства и методы, которые нам обычно не нужны. Тем не менее, цикл `for..in` выведет и их. Поэтому, если нам приходится иметь дело с объектами, похожими на массив, такие "лишние" свойства могут стать проблемой.
318318

319-
2. Цикл `for..in` оптимизируется в случае наличия обобщённого объекта, а не массива, и поэтому выполняется в 10-100 раз медленнее. Конечно, все равно это очень быстро. Увеличение скорости выполнения может иметь значение только при возникновении узких мест или казаться малозначимым. Но мы все же должны представлять разницу.
319+
2. Цикл for..in оптимизирован под произвольные объекты, не массивы, и поэтому в 10-100 раз медленнее. Увеличение скорости выполнения может иметь значение только при возникновении узких мест. Но мы все же должны представлять разницу.
320320

321321
В общем, не следует использовать цикл `for..in` для массивов.
322322

0 commit comments

Comments
 (0)