闭包可以让你从内部函数访问外部函数作用域
function init(){
const name=fern;
function myName(){
alert(name)
}
myName()
}
init()
浏览器弹出"fern";
function init(){
const name=fern;
function myName(){
alert(name)
}
return myName()
}
init()
这样的情况下浏览器也是可以弹出“fern”的
function init(){
const name=fern;
function myName(){
alert(name)
}
return myName
}
let a=init()
a()
这样浏览器才会弹出“fern”
这样是弹不出东西来的
把init()打印出来,是myName函数
这样才能打印出来
这样做是因为:return myName 返回的是myName函数体,函数体里面的东西需要另外一个变量去接(接的是return 出来的东西)然后再次执行
这样也可以弹出
function init(x){
return function(y){
return x+y
}
}
let add5 = addfun(2)let add10 = addfun(5)
console.log("add5", add5(5)) //7 console.log("add10", add10(10)) //15
addfun(2)返回的是下面的那个函数体 这个时候x=2
add5(5)调用了那个函数体 这个时候y=5 得到x+y的值 结果为7
addfun(10)同理