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?
My JavaScript tutorials are like your best friend walking you through tough times - real nice and easy-like. None of that eye-glazing technobabble. Visit howtocodejs.com to start learning.
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.
My JavaScript tutorials are like your best friend walking you through tough times - real nice and easy-like. None of that eye-glazing technobabble. Visit howtocodejs.com to start learning.
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
varstrictMode=true;varlogNumber=function(num){returnnum;}if(strictMode){logNumber=function(num){if(isNaN(num)){return;// do nothing}else{returnnum;// return number }}}
We would've had to have declared two separate functions if we hadn't created a function expression. Still, the difference is minimal.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
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?
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.
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.