高阶函数&Set&var/let/const的区别


高阶函数&Set&var/let/const的区别

这篇总结主要讲解了高阶函数&Set&var/let/const的区别

1.闭包函数

是什么?一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域
闭包=内层函数+外层函数的变量
作用解决全局变量污染

function outer() {
  let a = 10
  fuction fn() {
    console.log(a)
    }
    return fn
}
const fun = outer()
fun()

闭包应用
1.实现数据私有
2.可能会内存泄漏

2.递归函数

函数自己调用自己,他的功能十分强大,自己去查文档去了解了解

数据类型Set与Map

Set数组类型
语法const set = new Set(数组)
由于是Set类型,而不是数组类型,因此想要使用数组的方法,利用Array.from(set)
Set相当于是数组类型, 和数组Array唯一的区别是不能存储重复元素
场景 : 数组去重 let newArr = [ ...new Set(需要去重的数组) ]

let a = new Set([1, 2, 3, 4, 5,]);
let b = new Set([1, 2, 3]);
// //并集
console.log(new Set([...a, ...b]));

//交集
console.log(new Set(
    [...a].filter(item => b.has(item))
));
//差集
console.log(new Set(
    [...a].filter(item => !b.has(item))
));

map内置对象自己去查文档,与set的语法差不多

var/let/const

let

let声明的变量,
1.具有块级块级作用域,只在所处于的块级有效
2.变量名不能重复声明
3.不存在变量提升
4.具有暂时性死区
比如就是在if语句(块级作用域)中,外面定义了var a = 1,里面再写一个a=3;后面写一个let a;,此时if里面的a = 3就与let a;进行绑定,无法再去访问外部的那个a,这就叫暂时性死区

const

const声明常量,常量就是值(内存地址)是不可变化的量
1.具有块级作用域
2.声明常量时必须赋予初始值
3.常量的变量名一般大写(潜规则)
4.变量名不能重复声明
5.常量赋值后,值不能修改
基本数据类型的值不能修改,因为在修改的过程中改变了内存地址
在数组,对象中,能修改里面的值,但重新赋值(开辟新的内存地址)后,则是会报错

let const var的区别

1.使用var声明的变量,其作用域是在该语句所在函数内,且存在变量提升
2.使用let声明的变量,其作用域是在该语句所在代码块内,且不在变量提升
3.使用const声明的常量,其作用域是在该语句所在代码块内,且不在变量提升,值不可更改

展开运算符

语法... 例如:...arr
不会修改原数组
只存在于数组
返回的不是一个数组

运用场景 求数组最大值/最小值 合并数组等

合并数组的三种方法
数组3 = 数组1.push(...数组2)
数组3 = 数组1.concat(数组2)
数组1 = [...数组2, ...数组3]

浅拷贝—对象展开运算符


文章作者: 冷杨威
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 冷杨威 !
  目录
-->