Q: Here's a question I'd like answered. Why does this work? What is this Jedi nonsense?
sayMyNameSayMyName('Morty'); // 'I said your name, M...
For further actions, you may consider blocking this person and/or reporting abuse
In seriousness, this raises a question in my mind: does choosing to assign instead of declare functions have to do with avoiding weirdness with hoisting or some related issues?
To add on to what I wrote, you can also re-assign to a variable that contains an anonymous function. You can take advantage of this by writing an if statement that checks if we are in a certain mode
We would've had to have declared two separate functions if we hadn't created a function expression. Still, the difference is minimal.
That's a good question. For one, the concept of hoisting doesn't seem to be something people write their programs around. It's a convenient side-effect that some don't even recognize.
The thing about initialization versus declaration comes down to convention and flexibility.
It is the convention to create a class with a function declaration:
function Bat{...}
But if I wanted to create a function prototype, I would use an assignment operator.
Bat.prototype.fly = function(){...}
Because functions are first order, I can assign them, return them, use them as parameters.
Whether to declare or assign might just come down to style for some, but the differences go beyond hoisting.
I was thinking in terms of assigning to variables, but thanks for pointing out those other ways of assigning. I don't normally think of it that way with prototype methods and callbacks, but that does make sense.
Giving it a Unicorn, since...you know...functions are unicorns. :)