Automatically semicolon insertion, or do I always have to use semicolons is a hot topic in JS. Experts claim it’s confusing if you don’t add them in, some claim it’s inconsistent. Here is a great article eloquently explaining ASI:
An article on understanding for-in and which properties are iterated:
Equality vs Strict Equals
Last but not least, two book recommendations.