There’s nothing improper in your code, WebStorm’s type inference is getting a bit confused (this aspect of JavaScript is particularly confusing).
Its linter sees a string and assumes you will try something like this:
var primitive = "september";
primitive.vowels = 3;
primitive.vowels;
// => undefined
Which would lead to a ‘lost’ value.
The fact that it only catches this ‘error’ inside of a function seems like an outright bug that should be reported.
To further understand this weird part of JavaScript, I recommend Angus Croll’s excellent in-depth article here.