Как работает перебор свойств объекта?

91
13 мая 2021, 18:40

var o = {0:'Guest', 1:0, 2:false};  
for (var cur = 0; cur in o; cur++) {  
  console.log(cur + ": " + o[cur]);  
}
Не могу понять как работает этот код? Мы в цикле for создаём переменную cur и в условии проверяем ее наличие в объекте o. Но ее там нет, условие должно выдать false и цикл не выполнится.

Answer 1
  1. var cur = 0; - инициализируем переменную cur со значением 0.
  2. cur in o; - проверяем, есть ли в объекте свойство со значением, которое лежит в этой переменной. На первой итерации это 0, так что можно интерпретировать это как "0 in o". А в объекте есть такое свойство (0:'Guest');
  3. Потом в переменной увеличиваем значение переменной до 1, потом до 2, пока оно не достигнет 3.

Скорее всего, недопонимание было в том, что вы ожидали от оператора "in", что в случае "cur in o" он вернет true, если в объекте будет свойство {cur: 'Guest'}. Чтобы добиться такого эффекта, нужно передать оператору не переменную, а строку: "'cur' in o".

READ ALSO
JS не рисуется изображение на canvas

JS не рисуется изображение на canvas

Суть проблемы в том, что не рисуется ничего в canvasВ атрибут функции image1 передаю src и в консоли получаю "вход: (тут base64 изображения входного)",...

121
Не запускается отладка проекта CMake

Не запускается отладка проекта CMake

Возникает ошибка, при удалённой отладке:

96
Как работает аллокация памяти в контейнерах STL?

Как работает аллокация памяти в контейнерах STL?

У меня есть двухсвязный список std::list как protected обьект в классе A:

130
Ошибка во время запуска SFML программы на Eclipse

Ошибка во время запуска SFML программы на Eclipse

Программа начинает выполняться, отображается окноПотом зависает,завершается с этой ошибкой

83