笔记:闭包

关于闭包的一些思考

今天大胖问我什么是"闭包'',我没有回答上来编程

以前对闭包的理解一直停留在私有变量,闭了“内部”的环境的阶段bash

直到看到了轮子哥的这句话:闭包

闭包不是私有,闭的意思不是“封闭内部状态”,而是“封闭外部状态”,当外部状态的scope失效的时候,还有一份留在内部状态里面函数式编程

茅塞顿开!!!函数

而后本身试着作了一下简单的例子ui

// 定义了一个相加函数
function basicAdd(x) {
  console.log('At inner function num is: ', x);
  return function(y) {return x + y;};
 }
  
 let num = 8;
 // 将num做为参数传进去,add8的功能变被定为了add 8的操做;
 // 保留了num = 8时的状态
 const add8 = basicAdd(num);
 num ++;
  // 将num再次传入,add9的功能被定为了add 9的操做
 // 保留了num = 9时的状态
 const add9 = basicAdd(num);
  num ++;
 console.log(`result is: ${add8(10)}`);
 console.log(`result is: ${add9(10)}`);
 console.log(`the finnal num is: ${num}`);
复制代码

运行结果spa

At inner function num is:  8
At inner function num is:  9
result is: 18
result is: 19
the finnal num is: 10
复制代码

结合以前了解的函数柯里化以及Javascript函数式编程code

函数的魅力实在是无穷大ip

相关文章
相关标签/搜索