前端个人总结(奥利给)

事件循环—eventloop

js是单线程的。也就是说,同一个时间只能做一件事。作为浏览器脚本语言,与它的用途有关。
JavaScript的主要用途是和用户互动,以及操作DOM。这决定了它只能是单线程。
比如有一个添加节点,一个删除节点,肯定不能同时进行,还没添加怎么删除呢,所以是先添加DOM节点后删除DOM节点。
有些任务是耗时的,会阻塞代码的执行:

console.log(1)
setTimeout(function () {
   
console.log(2)
}2000)
console. 1og(3)

我们可以把代码分为同步代码(同步任务)和异步代码(同步代码)
同步代码:

console.log(1)
console. 1og(3)

同步代码:

setTimeout(function () {
   
console.log(2)
}2000)

异步代码除了setTimeout(一次性定时器)还有:
setlnterval(定时器)
jax/Fetch
事件绑定
异步代码的共同特点都是耗时
重点:
同步代码:立即放入JS引擎(JS主线程)执行,,并原地等待结果
异步代码:先放入宿主环境(浏览器/Node),不必原地等待结果,并不阻塞主线程继续往下执行,异步结果在将来执行
执行过程:
在这里插入图片描述
执行栈只要一执行完,就会反复到任务队列里面去看,有没有异步的任务需要去执行,执行栈到任务队列里面反复查找的过程就叫做事件循环
在这里插入图片描述
总结:
1.JS是单线程,防止代码阻塞,我们把代码(任务):同步和异步
2.同步代码给js引擎执行,异步代码交给宿主环境
3.同步代码放入执行栈中,异步代码等待时机成熟送入任务队列排队
4.执行栈执行完毕,会去任务队列看是否有异步任务,有就送到执行栈执行,反复循环查看执行,这个过程是事件循环(eventloop)

事件循环-宏任务和微任务

代码可能有3种:执行顺序依次往下
1.同步代码(js 执行栈/回调栈)
2.微任务的异步代码(js引擎)
process.nextTick ( node)
Promise.then() catch()
Async/Await
object.observe等等
Promise本身同步, then/catch的回调函数是异步的微任务
3.宏任务的异步代码(宿主环境)
script(代码块)
setTimeout/setInterval定时器
setImmediate定时器

什么是原型和原型链?

原型:每个函数都有prototype属性称之为原型,因为这个属性的值是个对象,也称为原型对象
作用:
1.存放一些属性和方法
2.在JavaScript中实现继承
proto:每个对象都有_proto_属性
作用:这个属性指向它的原型对象
在这里插入图片描述
1.原型:函数都有prototype属性

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值