2 ms·
Let's say you want to define a function to be used for a certain operation on two numbers dependent on some boolean. if (addition) { // operation =
by ShellfishMeme 13y ago
Let's say you want to define a function to be used for a certain operation on two numbers dependent on some boolean.
if (addition) {
// operation = add
}
else {
// operation = subtract
}
If you use function declarations you might run into bugs
if (addition) {
function operation (a, b) { return a + b; }
}
else {
function operation (a, b) { return a - b; }
}
console.log(operation(1,2));
Here it might happen that you don't get the expected function.
Additionally it's much less clear what's going on. Compare it to this:
var operation;
if (addition) {
operation = function add (a, b) { return a + b; };
}
else {
operation = function subtract (a, b) { return a - b; };
}
console.log(operation(1, 2));
Here it's very obvious what's going on and your operation function has a name that reflects what it does.
Personally I prever never to rely on function hoisting and always declare functions using function expressions. It keeps the code style more consistent and it's clearer what is happening in your program.