RE: RE: JavaScript开发笔记
You are viewing a single comment's thread from:

RE: JavaScript开发笔记

Words
134
Reading
1 min
Listen
Play
7M

理解闭包,首先必须理解变量作用域。前面提到,JavaScript 有两种作用域:全局作用域和函数作用域。函数内部可以直接读取全局变量。但是,函数外部无法读取函数内部声明的变量。

闭包就相当于一些变量+函数块,直接理解就是函数中再定义的函数。

注意: 在js中函数可以改变函数外部变量的值, 而python不行!

function f1() {
  let n = 999
  function f2() {
    console.log(n)
  }
  return f2
}

let result = f1()
result() // 999

f1f2f2f1f1

f2 JavaScript f2f1f2f1

使

eg2:
function startAt(x){
    function inc(y){
        return x + y
    }
    return inc
}

function startAt(x){
    return function inc(y){
        return x + y
    }
}

let a = startAt(1)  //function
console.log("func", a) //[Function: inc]
console.log("res", a(1)) //2
/*
 let a = startAt(1) 相当于:
 let a  = function inc(y){
    let x = 1
    return x + y
 }
*/
@lemooljiang: | Ecency