Js 数组 & 高阶函数
数组也是一种复合数据类型,在数组可以存储多个不同类型的数据
数组中存储的是有序的数据,数组中的每个数据都有一个唯一的索引可以通过索引来操作获取数据
数组中存储的数据叫做元素
任何类型的值都可以成为数组中的元素
基本操作
创建数组
数组添加元素
读取元素
获取数组长度
数组遍历 for-of
数组方法(非破坏性)
增删改查
深拷贝 &浅拷贝
展开运算符...
对象的复制
数组方法(破坏性)
数组去重
高阶函数
如果一个函数的参数或返回值是函数,则这个函数就称为高阶函数将函数作为参数,意味着可以对另一个函数动态的传递代码
回调函数
可以通过高阶函数,来动态的生成一个新函数
闭包
可以利用函数,来隐藏不希望被外部访问到的变量
闭包:闭包就是能访问到外部函数作用域中变量的函数
什么时候使用:当我们需要隐藏一些不希望被别人访问的内容时就可以使用闭包
构成闭包的条件:
函数的作用域在函数创建时就已经确定(词法作用域),和调用位置无关
闭包的生命周期:
闭包在外部函数调用时产生,外部函数每次调用都会产生一个全新的闭包
在内部函数丢失时销毁(内部函数被垃圾回收了,闭包才会消失)
注意事项:
闭包主要用来隐藏一些不希望被外部访问的内容,
这就意味着闭包需要占用一定的内存空间
相较于类来说,闭包比较浪费内存空间(类可以使用原型而闭包不能)
需要执行次数较少时,使用闭包
需要大量创建实例时,使用类
递归
调用自身的函数称为递归函数
递归的作用和循环是基本 一致的
递归的核心思想就是将一个大的问题拆分为一个一个小的问题,小的问题解决了,大的问题也就解决了
编写递归函数,一定要包含两个要件:
基线条件 —— 递归的终止条件
递归条件 —— 如何对问题进行拆分
递归的作用和循环是一致的,不同点在于,递归思路的比较清晰简洁,循环的执行性能比较好在开发中,一般的问题都可以通过循环解决,也是尽量去使用循环,少用递归只在一些使用循环解决比较麻烦的场景下,才使用递归
数组方法(回调函数参数)
函数可变参数
call 和 apply
调用函数除了通过函数()调用外,还可以通过其他的方式调用
bind
bind() 是函数的方法,可以用来创建一个新的函数
bind 可以为新函数绑定 this
bind 可以为新函数绑定参数
箭头函数没有自身的 this,它的 this 由外层作用域决定
无法通过 call apply 和 bind 修改它的 this
箭头函数中没有 arguments
文章转载自:木子七
评论