【JS高级】高阶函数

什么是高阶函数

高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。

image

此时fn就是一个高阶函数
函数也是一种数据类型,同样可以作为参数,传递给另外一个参数使用。最典型的就是作为回调函数。

闭包

变量作用域

image

什么是闭包

闭包( closure )指有权访问另一个函数作用域中变量的函数。----- JavaScript高级程序设计简单理解就是,一个作用域可以访问另外一个函数内部的局部变量

image

闭包的好处

  1. 闭包的作用:延申了变量的使用范围
  2. 一个作用域可以访问另外一个函数内部的局部变量

闭包的坏处

  1. 常驻内存会增加内存的使用量,使用不当容易导致内存泄露。
  2. 若不需要的情况下,在其他函数中创建函数是不明智的,因为闭包对脚本性能有负面影响,包括处理速度和内存消耗。

闭包的应用1.

image

内部函数访问外部函数的局部变量(点击事件打印出的i访问到了立即执行函数的i)产生了闭包

闭包的应用2

image

定时器中的i使用到了立即执行函数中的i

什么是递归

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。

简单理解:函数内部自己调用`自己这个函数就是递归函数

递归函数的作用和循环效果一样
由于递归很容易发生“栈溢出”错误( stackoverflow ),所以必须要加退出条件return.

image

递归的应用1

image

递归的应用2

用来实现深拷贝

image

浅拷贝和深拷贝

浅拷贝只是拷贝一层,更深层次对象级别的只拷贝引用 拷贝的只是地址

深拷贝拷贝多层,每一级别的数据都会拷贝.开辟一个新空间存放对象

浅拷贝

image

image

或使用object.assign(拷给谁,源头)

如果遇到更深一层的对象的话,只会拷贝他的地址

深拷贝

image

posted @ 2022-08-08 10:11  一个大不刘blog  阅读(32)  评论(0编辑  收藏  举报