When I use the ES6 class syntax, a variable inside a method declared without \'let\' or \'var\' is undefined. However, when using the regular object syntax, it is defined.
When I use the ES6 class syntax, a variable inside a method declared without 'let' or 'var' is undefined.
Actually, it's undeclared. That's why you get an exception.
However, when using the regular object syntax, it is defined.
That's because ES6 class methods automatically run in strict mode, your regular object syntax does only run in sloppy mode. (It should not! "use strict"
mode everywhere!)
Assigning to an undeclared identifier will implicitly create a global variable, a thing which you'll definitely want to avoid.
Not using the class syntax solves this problem
No, the problem is solved by properly declaring the variable.