function foo() {
var name = "foo" function bar() {
console.log("bar", name)//"bar" "foo" } return bar } var fn = foo()//这里也会执行函数 这一步执行foo,执行完销毁(本该销毁name的) // 闭包是两部分组成的:函数+可以访问的自由变量 fn()//(var fn = foo()执行完后本该销毁name的,但仍然可以在bar中访问name--->这是因为js内部让本该销毁的foo的AO没有销毁.所以调用bar时仍然可以访问到foo的AO中的东西,这时候闭包就形成了,闭包就是bar这个函数本身+可以在这个函数中访问的自由变量,)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218518.html原文链接:https://javaforall.net
