【无标题】

回顾函数

函数执行空间:
1、函数执行完被销毁空间
在这里插入图片描述
在这里插入图片描述
2、函数执行完不被销毁空间
当函数体代码返回一个复杂数据类型,赋值给变量f时,调用栈空间不会被销毁
在这里插入图片描述

闭包

闭包是javascript语法现象,是函数的高级用法

  • 闭包形成条件: (熟记并背诵)

  • 有一个A函数,在A函数内部返回一个B函数

  • 在B函数内部,访问A函数内部私有变量

  • 在A函数外部,有一个变量引用返回的B函数

  • 有函数嵌套,内层函数被返回

  • 内层函数访问外层函数私有变量

  • 返回的内层函数被引用
    在这里插入图片描述
    闭包形成后:

  • 生成一个不会被销毁的函数执行空间,

  • 内部函数叫做外部函数的闭包函数

<script>
            // 1. 函数嵌套外层函数
			function fun() {
				let num = 100 // 3. 内层使用外层函数变量
                // 内层函数
				return function(){
                    console.log('num :',num)
                }
			}
			let f = fun() // 2. 外部引用返回的内层函数
            let f1 = fun()
            f()
		</script>
	</body>
  • 闭包作用:

             1. 形成不被销毁的执行空间,延长变量生命周期, 缺点,容易引起内存泄露,(执行多次,内存吃不消)
             2. 外部可以访问内部函数的变量- 变量作用域扩展 ;没有形成闭包前:只能内部函数访问外层函数变量
             3. 调用栈形成的是块作用域,互不影响,可以定义私有变量 
    

闭包三种写法

  1. 显示写法
    在这里插入图片描述

  2. 隐示写法
    在这里插入图片描述
    这里的B其实和return 返回是一样的效果

  3. 自调用函数
    在这里插入图片描述

闭包的应用

闭包实现点赞功能:
以前:
在这里插入图片描述
采用调用函数:

在这里插入图片描述
自调函数写法(推荐)
在这里插入图片描述

柯里化函数

柯里化(Currying)是一种关于函数的高阶技术。它不仅被用于 JavaScript,还被用于其他编程语言。
柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)©。

柯里化不会调用函数。它只是对函数进行转换。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值