vm.someVar = '';
- скорее, vm.someVar;
?
Это не переменная и не объявление.
Это присваивание, которое создает свойство дляvm
объект.В отличие от этого, vm.someVar;
просто не работает (он ничего не делает) и должен быть полностью удален.
Да, если вы хотите создать свойства, вам потребуется для их инициализации.Вы можете инициализировать их с помощью undefined
, но лучше инициализировать их значением по умолчанию того же типа, что и позже.И да, хорошей практикой является создание свойств в конструкторе (при создании объекта) вместо добавления их по факту.