JavaScript 中的闭包:为什么变量在函数执行后仍然可用?
闭包在 javascript 中的神秘之处
在 javascript 中,闭包是一个让许多初学者困惑的概念。当变量在执行函数后仍然可用时,闭包就会形成。
让我们深入研究一个示例:
function fn() { var num = 3; return function() { var n = 0; n++; num++; console.log('n=' + n); console.log('num=' + num); } } var fn1 = fn(); fn1(); // 1 4 console.log("------"); fn1(); // 1 5
在这个示例中,你会注意到变量 num 在第一次执行 fn 函数后不会被销毁。这导致每次调用 fn1 时 num 会累积,而 n 会重新初始化。
发生这种情况是因为 fn1 是一个闭包,它可以访问父函数 fn 的内部变量 num。即使 fn 函数已经执行完毕,闭包的特性也会保留其变量,直到不再被引用。
因此,在 javascript 中,闭包允许函数访问其外部作用域的变量,即使该作用域已经结束了。这提供了强大的灵活性,但如果不仔细使用,也可能导致意想不到的行为,例如内存泄漏。
为了更好地理解闭包,可以参考阮一峰的深入文章:“学习javascript闭包(closure)”。
以上就是JavaScript 中的闭包:为什么变量在函数执行后仍然可用?的详细内容,更多请关注其它相关文章!