5.29新学知识

1、数组的方法
flat:多维数组的扁平化处理,传入参数为深度,可以为Infinity
from:将字符串转换为数组,好用,但是个人还会更愿意使用json.parse
累加器reduce:参数为一个callback函数,callback内参数为(accumulator,item,index,array)[,可选初始值]

let arr=[1,2,3,4]
console.log(arr.reduce((accumulator,item)=>(accumulator+item),10))
//结果为20

9大场景:
1.1、数组求和
1.2、累加对象里的值
1.3、二维数组转一维数组
用concat
1.4、计算数组中每个元素出现的次数

var names=['alice','bob','alice']
names.reduce((acc,item)=>if(item in acc){
  acc[item]++;
 }
 else{
  acc[item]=1;
 }
 return acc;
},{})
//结果为{'alice':2,'bob':1}

1.5、根据对象属性对对象进行分类
1.6、使用扩展运算符和initialValue绑定包含在对象数组中的数组(这是个啥)
1.7、数组去重(先排序sort后reduce)
1.8、按序运行promise
1.9、功能型函数管道
2、预编译的问题
预编译会创建一个ao对象,将变量形参作为属性,实现形参和实参的统一,没有实参值为undefined,如果函数名和形参名重合,会进行覆盖
3、箭头函数的this指向
它是在定义函数时绑定,而不是执行函数时绑定,不是因为有绑定this的机制,而且因为箭头函数没有自己的this,内部this就是外层代码块的this(个人理解是比正常this指向再多一个外层),联想到call、apply、bind这三种绑定this指向的方式,不知道有效不!这个题有点打脑壳
4、浅拷贝和深拷贝
个人总结:浅拷贝对于基本数据类型组成有用,但是无法拷贝引用数据类型的内容,引用类型拷贝的地址
浅拷贝和赋值的区别:当我们把一个对象赋值给一个新变量时,赋的是该对象在栈中的地址,真的内容存在堆中,任何一个对象改变,对象内容都会改变
浅拷贝为重新在堆中创建内存,拷贝前后对象的基本数据类型互不影响,但拷贝前后对象的引用类型因共享同一块内存,会相互影响
深拷贝为从堆中开辟一个新的区域存储对象,对对象的子对象进行递归拷贝,前后两个对象互不影响
突然想起一个之前知道的知识点,就加在这了巩固一下(三个特殊的一元运算符:typeof、instanceof,应该还有一个)
5、作用域的深层次理解
当函数代码执行的前期,会先创建一个执行期上下文的内部对象a0;当全局代码执行前期会创建一个对象G0,第一个打印的应该是函数a作用域的理解
6、闭包实现单例模式
这个搁置:需要研究一下apply等三种指定this的方法,并自己试着写一个单例模式的封装
7、js运行机制
单线程:同一时间做同一件事
arguments:类数组对象,转化为数组方式有解构赋值、数组原型上的方法slice、自己能写的原生,箭头函数没有arguments对象
函数中定义let a=b=0
内存泄露:闭包、意外的全局变量、定时器、脱离dom的引用
高阶函数:将函数作为参数或返回值的函数在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值