问题
What are the disadvantages to nesting a function within a nested function within a nested function...
Here's an example:
JS/jQuery:
function one() {
// do something
function two() {
// do something
function three() {
// do something
function four() {
// do something
}
}
}
}
回答1:
One disadvantage
of declaring a nested function is the fact that it will be created inside function's environment every time you call parent
function.
In theory, this could decrease
performance if parent
function is called frequently.
But, nested function are very used in javascript
.For example,closures
are extremely powerful and should be understood by all JavaScript developers.
Read more about closures
, here.
回答2:
Nested functions have access to their parent scope so you could change state in a parent's scope from a deeply nested function. For example
function one() {
var a = 1;
two(); // a = 4
function two() {
var b = 2;
three(); // b = 4
function three() {
var c = 3;
four(); // c = 4
function four() {
a = 4;
b = 4;
c = 4;
}
}
}
}
On one hand this is pretty powerful. On the other hand it can easily get sloppy and hard to reason about because you have to make sure any child function hasn't changed a value in any of its parents.
If you stick to not nesting your functions you won't have to worry that the state inside your function is being changed from inside of a nested function.
function one() {
var a = 1;
two(); // a = 1
}
function two() {
var b = 2;
three(); // b = 2
}
function three() {
var c = 3;
four(); // c = 3
}
function four() {
a = 4;
b = 4;
c = 4;
}
来源:https://stackoverflow.com/questions/41535428/is-it-bad-practice-to-nest-functions-within-each-other