JavaScript:单线程
最近在学习异步编程,巩固了一下js,以下是我最近学习整理的内容,记录一下~
1.JS是单线程的
JS是单线程的,所以JS中的代码都是串行的, 前面没有执行完毕后面不能执行。
2.同步代码和异步代码
除了"事件绑定的函数"和"回调函数"以外的都是同步代码
2.1程序运行会从上至下依次执行所有的同步代码
2.2在执行的过程中如果遇到异步代码会将异步代码放到事件循环中
2.3当所有同步代码都执行完毕后, JS会不断检测 事件循环中的异步代码是否满足条件,一旦满足条件就执行满足条件的异步代码
3.为什么JS是单线程的?
javaScript的单线程,与它的用途有关。 作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。
这决定了它只能是单线程,否则会带来很复杂的同步问题。
例如: 如果JS是多线程的
现在有一个线程要修改元素中的内容, 一个线程要删除该元素, 这时浏览器无法确定以哪个线程为准,此时就会出错。
举例
console.log("1"); // 同步代码
setTimeout(function () { // 异步代码
console.log("2");
}, 500);
console.log("3"); // 同步代码
输出顺序:1 3 2
附上参考链接:https://segmentfault.com/a/1190000015042127