You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/05-data-types/04-array/article.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -205,7 +205,7 @@ arr.push("Груша"); // массив меняется по ссылке
205
205
alert( fruits ); // Банан, Груша - теперь 2 элемента
206
206
```
207
207
208
-
...Но то, что действительно делает массивы особенными - это их внутреннее представление. Программа старается хранить элементы массива в виде непрерывной области памяти, один за другим, так, как это показано на иллюстрациях к этой главе. Существуют и другие способы оптимизации, заставляющие массив работать действительно быстро.
208
+
...Но то, что действительно делает массивы особенными - это их внутреннее представление. Движок JavaScript старается хранить элементы массива в непрерывной области памяти, один за другим, так, как это показано на иллюстрациях к этой главе. Существуют и другие способы оптимизации, благодаря которым массивы работают очень быстро.
209
209
210
210
Но все они утратят эффективность, если мы перестанем работать с массивом, как с «упорядоченной коллекцией данных», и начнем использовать его как обычный объект.
Это возможно, потому что в основе массива лежит объект. Мы можем присвоить ему любые свойства.
223
223
224
-
Но программа поймет, что мы работаем с массивом, как с обычным объектом. Способы оптимизации, используемые для массивов, в этом случае не подходят и поэтому они будут отключены и никакой выгоды не принесут.
224
+
Но движок поймёт, что мы работаем с массивом, как с обычным объектом. Способы оптимизации, используемые для массивов, в этом случае не подходят и поэтому они будут отключены и никакой выгоды не принесут.
225
225
226
226
Варианты неправильного применения массива:
227
227
@@ -314,9 +314,9 @@ for (let key in arr) {
314
314
315
315
1. Цикл `for..in` выполняет перебор *всех свойств* объекта, а не только цифровых.
316
316
317
-
В браузере и других программных средах также существуют так называемые "массивоподобные" объекты, которые *выглядят, как массив*. Это означает, у них есть свойство `length` и индексы, но также они могут иметь дополнительные нечисловые свойства и методы, которые нам обычно не нужны. Тем не менее, цикл `for..in` выведет и их. Поэтому, если нам приходится иметь дело с объектами, похожими на массив, такие "лишние" свойства могут стать проблемой.
317
+
В браузере и других программных средах также существуют так называемые "псевдомассивы" - объекты, которые *выглядят, как массив*. То есть, у них есть свойство `length` и индексы, но также они могут иметь дополнительные нечисловые свойства и методы, которые нам обычно не нужны. Тем не менее, цикл `for..in` выведет и их. Поэтому, если нам приходится иметь дело с объектами, похожими на массив, такие "лишние" свойства могут стать проблемой.
318
318
319
-
2. Цикл `for..in` оптимизируется в случае наличия обобщённого объекта, а не массива, и поэтому выполняется в 10-100 раз медленнее. Конечно, все равно это очень быстро. Увеличение скорости выполнения может иметь значение только при возникновении узких мест или казаться малозначимым. Но мы все же должны представлять разницу.
319
+
2. Цикл for..in оптимизирован под произвольные объекты, не массивы, и поэтому в 10-100 раз медленнее. Увеличение скорости выполнения может иметь значение только при возникновении узких мест. Но мы все же должны представлять разницу.
320
320
321
321
В общем, не следует использовать цикл `for..in` для массивов.
0 commit comments