Could you go into more detail about why you would do A)
var func = function func() { /* blah */ };
Instead of B) function func() { /* blah */ }; var func = function func() { /* blah */ };
Instead of B) function func() { /* blah */ }; 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.
var func = _.memoize(function private_non_memoized_func() {
func(); // "light"
private_non_memoized_func(); // "heavy"
});