主流环境是单线程模式执行js代码。之所以采用单线程模式,和当初的设计意图有关。最早是运行在浏览器上的脚本语言,目的是实现页面的动态交互。实现页面交互的核心是操作,这就决定了必须使用单线程模式来处理,否则会造成严重的线程同步问题。如果多个线程同时修改元素,浏览器此时无法显式引用那个线程的结果。为了避免这个线程同步问题,js从一开始就被设置为单线程模式工作。这里的单线程指的是。
想象一下,只有一个人可以完成一项任务。一个人一次只能执行一项任务。如果有多个任务,他们需要排队依次完成。这种模式最大的优点是更安全更简单,缺点也很明显。遇到一个特别耗时的任务,需要等待这个任务的结束,导致整个程序的执行延迟,出现假死的情况。
为了解决任务耗时的问题,任务执行分为两种模式,即
同步模式()
异步模式()
代码按顺序执行,后一个任务要等前一个任务完成。同步执行比较简单,代码的执行顺序就是代码的顺序。单线程大多处于同步模式。
是打印的输出,是执行堆栈。
启动js会加载我们的整个代码,放入匿名函数中执行,然后逐行开始执行。
第一行执行将把推入调用堆栈,当控制台打印并执行时,调用堆栈将弹出。
接下来,将执行两个不会生成调用的函数的声明。
接下来是调用函数,该函数会将推入调用堆栈。该函数打印一条消息,然后执行该函数,该函数也将被放入执行堆栈。在函数执行过程中,会再次打印,执行后会弹出调用栈,紧接着函数执行结束。
最后,打印一条消息,并按下相同的堆栈。执行完整个代码后,执行堆栈将被清空。
小程序搜索
发表评论