JavaScript 嵌套函数与闭包

可以在函数的内部嵌套一个函数。嵌套函数对容器函数是私有的,它自身也形成了一个闭包。

  • 内部函数只可以在外部函数中访问。
  • 内部函数形成了一个闭包,它可以访问外部函数的参数和变量,但是外部函数不能使用它的参数和变量。
1
2
3
4
5
6
7
8
9
10
function outside(x) {
function inside(y) {
return x + y;
}
return inside;
}
fn_inside = outside(3); // Think of it like: give me a function that adds 3 to whatever you give it
result = fn_inside(5); // returns 8

result1 = outside(3)(5); // returns 8

闭包

闭包是 JavaScript 中最强大的特性之一。JavaScript 允许函数嵌套,并且内部函数可以访问定义在外部函数中的所有变量和函数,以及外部函数能访问的所有变量和函数。但是,外部函数却不能够访问定义在内部函数中的变量和函数。这给内部函数的变量提供了一定的安全性。此外,由于内部函数可以访问外部函数的作用域,因此当内部函数生存周期大于外部函数时,外部函数中定义的变量和函数将的生存周期比内部函数执行时间长。当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。

-------------本文结束感谢您的阅读-------------
0%