| 
		
			Сообщение от slark
			
		
	 | 
	| 
		почему через обычный цикл работает, а через for in не работает
	 | 
	
Ответ, как всегда, в букваре... 
	
	| 
		
			 Цитата: 
		
	 | 
	| 
		Для перебора всех свойств из объекта используется цикл по свойствам for..in. Эта синтаксическая конструкция отличается от рассмотренного ранее цикла for( ; ; ).
	 | 
	
https://learn.javascript.ru/object-for-in
Т.е. это разные циклы и они таки различаются, потому и разные результаты. 
А "не работает" он у тебя потому, что ты не понимаешь что получаешь в том цикле.
Но он таки всегда работает как нужно
<div></div>
<script>
const a = document.querySelectorAll('div')
for (let k in a) {
	alert(k)
}
</script>