当一个函数被建立时,闭包就会被产生,虽然常见的闭包说明方式会使用巢状函数当作例子,这是最常见的例子没错,但是并不是只有巢状函数才能产生闭包。
直接举一个例子:
function func() { // func1引用了它外层的变数a,因此func成为了闭包
let a = 123
function func1() {
console.log(a) //访问了外层的func内的a
debugger;
}
func1();
}
func()
上图可得知函数建立时就会存在闭包了,再进入call stack中的func1
进入func1後,可以发现closure进到了Scope,代表闭包也算是作用域的一种。
直接举一个例子说明:
function getIntro(height,weight) {
function addString() {
console.log(`身高${height},体重${weight}`)
}
return addString
}
let getIntroString = getIntro(180,70);
getIntroString();
另外返回的function是可以重复且独立使用,闭包内的变数是互相独立的,举个例子:
function plusNum() {
let initNum = 100;
return function(num = 0) {
initNum+=num
console.log(`current num is ${initNum}`)
}
}
let plusNumA = plusNum();
plusNumA(); // current num is 100
plusNumA(10); // current num is 110
plusNumA(20); // current num is 130
let plusNumB = plusNum();
plusNumB(); // current num is 100
plusNumB(20); // current num is 120
plusNumB(40); // current num is 160
<<: 【Day10】ERP核心模组篇-Manufacturing
有碰过 python 的朋友们应该都知道,在 python 中,list 是可以存任何型态的东西,即...
如果上一篇威尔猪讲的 Flex 是十字形排版法,那今天讲的 Grid 就属於棋盘格排版法。它比 F...
教材网址 https://coding104.blogspot.com/2021/06/java-f...
先看一下有哪些api 下面列出这次用到的openapi, 可以看到他有一个共通的domain htt...
0x0 前言 继昨日,Sign的篇幅跟测试的时间花比较久,因此拆成part 1, 2 0x1 IV ...