在嵌套函数中嵌套函数内嵌函数有什么缺点...
以下是一个例子:
JS / jQuery的:
function one() {
// do something
function two() {
// do something
function three() {
// do something
function four() {
// do something
}
}
}
}
答案 0 :(得分:2)
声明嵌套函数的一个disadvantage
是每次调用parent
函数时都会在函数的环境中创建它。
理论上,如果频繁调用decrease
函数,则parent
性能可能会有所提升。
但是,javascript
中使用了嵌套函数。例如,closures
非常强大,所有JavaScript开发人员都应该理解。
详细了解closures
,here.
答案 1 :(得分:2)
嵌套函数可以访问其父作用域,因此您可以从深层嵌套函数更改父作用域中的状态。例如
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;
}
}
}
}
一方面,这非常强大。另一方面,它很容易变得草率而且难以推理,因为你必须确保任何子函数都没有改变任何父函数的值。
如果坚持不嵌套函数,则不必担心函数内部的状态是从嵌套函数内部更改的。
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;
}