0
Не ошибка
for in - баг или фича?
Доброго дня всем!
Есть такой код в серверном проекте:
var Sensors = [ {name:"LS1", fullName:HDL_mixContr+"Датчик_1"}, {name:"LS2", fullName:HDL_mixContr+"Датчик_2"} ]; for(ss in Sensors){ debug(ss); debug("Subscribe tag: "+ss.fullName); IR.SubscribeTagChange(STHDL+ss.fullName); }
Объясните почему в консоли я вижу это:
0
Subscribe tag: undefined
1
Subscribe tag: undefined
Я ожидал увидеть там:
Object
Subscribe tag: Датчик _1
Object
Subscribe tag: Датчик _2
Сервис поддержки клиентов работает на платформе UserEcho
Здравствуйте.
Строка debug(ss); возвращает 0 и 1 потому что Вы перебираете массив - возвращается индекс элемента массива.
Используйте такую конструкцию для вывода значения свойства fullName:
почему возвращается индекс, а не сам элемент массива. вот что не понятно и не очевидно.
Это особенность работы цикла for in, который, вообще-то не рекомендуется использовать для массивов. Если Вы хотите вывести элемент массива, то нужно использовать такую конструкцию:
Понял. В JS своя особая интерпретация этого цикла. Цикл для перебора свойств, а не элементов.