没有合适的资源?快使用搜索试试~ 我知道了~
JavaScript 执行机制1
需积分: 0 0 下载量 76 浏览量
2022-08-03
11:25:05
上传
评论
收藏 596KB PDF 举报
温馨提示
试读
13页
1.关于javascript 2.javascript事件循环 4.又恨又爱的setInterval 5.Promise与process.nextTick(ca
资源详情
资源评论
资源推荐
这⼀次,彻底弄懂 JavaScript 执⾏机
制
2017 年 11 ⽉ 21 ⽇
本⽂的⽬的就是要保证你彻底弄懂javascript的执⾏机制,如果读完本⽂还不
懂,可以揍我。
不论你是javascript新⼿还是⽼鸟,不论是⾯试求职,还是⽇常开发⼯作,我
们经常会遇到这样的情况:给定的⼏⾏代码,我们需要知道其输出内容和顺
序。因为javascript是⼀门单线程语⾔,所以我们可以得出结论:
javascript是按照语句出现的顺序执⾏的
看到这⾥读者要打⼈了:我难道不知道js是⼀⾏⼀⾏执⾏的?还⽤你说?稍
安勿躁,正因为js是⼀⾏⼀⾏执⾏的,所以我们以为js都是这样的:
let a = '1';
console.log(a);
let b = '2';
console.log(b);
然⽽实际上js是这样的:
setTimeout(function(){
console.log('定时开始啦')
});
new Promise(function(resolve){
console.log('上执for循环啦');
for(var i = 0; i < 10000; i++){
i == 99 && resolve();
}
}).then(function(){
console.log('执then函数啦')
});
console.log('代码执结束');
依照js是按照语句出现的顺序执⾏这个理念,我⾃信的写下输出结果:
//"定时开始啦"
//"上执for循环啦"
//"执then函数啦"
//"代码执结束"
去chrome上验证下,结果完全不对,瞬间懵了,说好的⼀⾏⼀⾏执⾏的呢?
我们真的要彻底弄明⽩javascript的执⾏机制了。
1.关于javascript
javascript是⼀门单线程语⾔,在最新的HTML5中提出了Web-Worker,但
javascript是单线程这⼀核⼼仍未改变。所以⼀切javascript版的"多线程"都是
⽤单线程模拟出来的,⼀切javascript多线程都是纸⽼虎!
2.javascript事件循环
既然js是单线程,那就像只有⼀个窗⼜的银⾏,客户需要排队⼀个⼀个办理
业务,同理js任务也要⼀个⼀个顺序执⾏。如果⼀个任务耗时过长,那么后
⼀个任务也必须等着。那么问题来了,假如我们想浏览新闻,但是新闻包含
的超清图⽚加载很慢,难道我们的⽹页要⼀直卡着直到图⽚完全显⽰出来?
因此聪明的程序员将任务分为两类:
同步任务
异步任务
当我们打开⽹站时,⽹页的渲染过程就是⼀⼤堆同步任务,⽐如页⾯⾻架和
页⾯元素的渲染。⽽像加载图⽚⾳乐之类占⽤资源⼤耗时久的任务,就是异
步任务。关于这部分有严格的⽂字定义,但本⽂的⽬的是⽤最⼩的学习成本
彻底弄懂执⾏机制,所以我们⽤导图来说明:
剩余12页未读,继续阅读
熊比哒
- 粉丝: 30
- 资源: 292
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0