Сообщение от micscr
			 
		
	 | 
	
		Это у вас очень чудное правило. 
Которое больше как фонит тем что вы не разобрались в разнице , мол эзотерика. Нет эзотерики, код для шага цикла ничего не возвращает, поэтому для него нет разницы, и писать ++i несколько паливно
	 | 
	
Какaя разница в постинкременте или преинкременте там, где это ни на что не влияет?
А раз разницы нет - есть свобода для проявления индивидуально творческого стиля.
Иногда вообще пишут «I+++j»…
 
	
	
		
			Сообщение от Aetae
			 
		
	 | 
	
		Я вот люблю битовые флаги, типа: 
const Action = {
  DEFAULT:       0b000000000, // do nothng 
  DELETE:        0b000000001, // to trash
  ARCHIVE:       0b000000010, // to archive
  FINALIZE:      0b000000100, // remove "new" label and star 
  ADD_LABEL:     0b000001000, // add specified label
  READ:          0b000010000, // mark as read
}
	 | 
	
Если идти строго по Си, можно и так:
const	C_Struct = {
	Field_1	:1,	// 1 бит
	Field_2	:2,	// 2 бита
	Field_3	:2,	// 2 бита
	Field_4	:3	// 3 бита
}
var		MyFields = {
	_struct	:C_Struct,
	Fields	:0x9D
}
function Read_CStruct(Struct, Field) {
	var	i = 0;
	for(var id in Struct._struct) {
		if(id == Field)
			return (Struct.Fields >> i) & ~(-1 << Struct._struct[id]);
		i += Struct._struct[id];
	}
}
console.log(`Field_3: ${Read_CStruct(MyFields, "Field_3")}`);