Цикл for используется для двух основных целей:
| Python | Javascript |
|---|---|
| Выполнить блок заданное число раз # | |
i = 0 i = 1 i = 2 i = 3 |
i = 0 i = 1 i = 2 i = 3 |
| Обработать все элементы списка / массива # | |
1 2 10 |
1 2 10
1 2 10
1 2 10требует: es6
1 2 10 |
| Значение переменной цикла после его выполнения # | |
Step 0 Step 1 Step 2 Step 3 Outside of loop, i = 3 |
Step 0 Step 1 Step 2 Step 3 Outside of loop, i = 4
Step 0
Step 1
Step 2
Step 3
[stdin]:4
console.log("Outside of loop, i =", i)
^
ReferenceError: i is not defined
at [stdin]:4:37
at Script.runInThisContext (vm.js:132:18)
at Object.runInThisContext (vm.js:315:38)
at Object.<anonymous> ([stdin]-wrapper:10:26)
at Module._compile (internal/modules/cjs/loader.js:1256:30)
at evalScript (internal/process/execution.js:98:25)
at internal/main/eval_stdin.js:29:5
at Socket.<anonymous> (internal/process/execution.js:211:5)
at Socket.emit (events.js:326:22)
at endReadableNT (_stream_readable.js:1244:12)
требует: es6
|
| Опасности перебора элементов списка с помощью in # | |
Exception: AttributeError 'list' object has no attribute 'some_value' В объект стандартного типа
1 2 10 Можно создать новый класс, наследуя от |
1 2 10 I'm here! В JavaScript массив — это просто (хорошо оптимизированный) объект с
числовыми индексами. Если вы добавите ещё одно свойство в этот
объект, оно окажется в числе перечисляемых с помощью
1 2 10 I'm here! |
| Перебор ключей в словаре / объекте # | |
a b |
a b new_property В объектах JavaScript не различаются записи, свойства и методы.
Более того: цикл
a b |
| Перебор ключей и значений в словаре / объекте # | |
a => 10 b => 20 |
a => 10 b => 20ссылка См. комментарий к другому примеру. |
Это наиболее безопасный способ перебора элементов массива. Поддерживается во всех версиях JS, нет опасности включить в перебор свойства, не являющиеся индексированными элементами списка, см. другой пример.