javascript执行栈
从网上看到
javascript在函数执行前会将要执行的函数都压入一个栈当中
<script>
foo();
function foo() {
setTimeout("alert(1)", 0);
alert(2);
}
</script>
在以上例子中
foo,setTimeout和alert(2)被压入一个栈A当中
"alert(1)"执行语句被压入另一个栈B当中
先栈A或栈B
所以执行的顺序是先输出2在输出1
各位JEers,是这个样子的么?
欢迎大家踊跃发言,哈哈
我开始以为被setTimeout“唤醒”执行的函数有可能会打断正在执行的函数
做了个实验
发现正在执行的函数不会被打断
<script>
setTimeout(function() {
for(var i = 0; i < 10000; i++) {
}
alert("done at\n" + new Date().getTime());
}, 1000);
foo(5000);
foo2(5000);
function foo(offset) {
var now = new Date().getTime();
var con = now + offset;
while(new Date().getTime() < con) {
}
document.writeln("foo1<br />" + new Date().getTime() + "<br /><br /><br />");
}
function foo2(offset) {
var now = new Date().getTime();
var con = now + offset;
while(new Date().getTime() < con) {
}
document.writeln("foo2<br />" + new Date().getTime() + "<br />");
}
</script>
以上例子中
即使
function() {
for(var i = 0; i < 10000; i++) {
}
alert("done at\n" + new Date().getTime());
}
是在setTimeout执行后的1秒被“唤醒”
它也不会打断foo(foo执行过程会花费5秒)
而只是把它放入栈中
以保证它在最快的时间内执行
也就是前面栈都执行完毕之后
想想也符合网上的说法
但心里却还是有些疑问
这个调用栈到底是什么样子的?
上面有错误的话
请大家一定要指出来额
也欢迎大家说说自己的看法
谢谢大家
分享到:
相关推荐
前言:这是笔者学习之后自己的理解与整理。如果有错误或者疑问的地方,请大家指正,我会持续更新!... 执行环境栈就是根据代码执行顺序,各执行环境按照栈的形式逐层访问,并且用完了退出来扔掉;如果当前执行环
文章目录变量提升执行上下文全局执行上下文函数执行上下文执行上下文栈作用域例题举个栗子 执行上下文栈:举个栗子 变量提升+执行上下文栈:举个栗子 预处理顺序举个栗子 预处理举个栗子 顺序执行举个栗子 作用域举...
JavaScript的执行顺序调用栈:JavaScript栈溢出的原因块级作用域:var的缺陷作用域链和闭包这个:JavaScript执行上下文V8的工作原理栈空间和堆空间垃圾回收编译器和解析器浏览器中的页面循环系统消息极性和事件循环...
---然后跳出整个async1函数来执行后面js栈的代码 <li>4.console.log("promise1-111"); 异步任务顺序: <li>1.回到async1函数中等待await后面表达式的返回值 <li>2.promise的.then() <li>3.setTimeout()</li>
Javascript Basic 1、Javascript 概述(了解) Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS...
今天给大家介绍一个基于数据结构中的队列的一个动画,在实现这个动画之前呢,还是给大家讲讲,在JavaScript中我们如何实现一个队列. 二 队列 队列是一种列表,不同的是队列只能在末尾插入元素,在队首删除元素。队列...
该项目采用了以下核心技术栈: ...7. **顺序图:** 展示系统功能执行的顺序和交互。 8. **E-R图:** 展示数据模型的实体关系图。 9. **界面颜色显示效果:** 系统界面具有特定的颜色显示效果,提升用户体验。
前言:sunflower: :blossom: :tulip:高并发处理每个Node.js进程只有一个主线程在执行程序代码,形成一个执行栈(execution context stack)。主线程之外,还维护了一个"事件队列"(Event queue)。当用户的网络请求...
经典类与新式类的继承顺序 继承实例讲解 多态实例讲解 本节作业之选课系统开发 第7周 心灵分享 上节回顾 静态方法、类方法、属性方法 课堂扯淡 深入讲解类的特殊成员方法__init__等 深入讲解类的特殊成员方法__new...
script加载js会阻塞渲染,标签中 fefer 指异步加载js,在文档load之后按顺序执行。async指异步加载,加载完立即执行,不保证顺序 用来在不支持脚本的浏览器显示内容 js 选中文字: 1、document.createRange() 2、...
确定执行代码的顺序 连续编写多个嵌套的异步调用 设置舞台 为什么? 了解JavaScript的异步功能(以及如何利用它的优势)构成了绝大多数Node和Browser编程的基础。 想象一下,如果您的应用程序必须等待一个事件完成才...
确定执行代码的顺序 连续编写多个嵌套的异步调用 设置舞台 为什么? 了解JavaScript的异步功能(以及如何利用它的优势)构成了绝大多数Node和Browser编程的基础。 想象一下,如果您的应用程序必须等待一个事件完成才...
它的中间件之间按照编码顺序在栈内依次执行,允许我们执行操作并向下传递请求(downstream),之后过滤并逆序返回响应(upstream)。运行环境理论上,符合下面任一条件即可:在 Node.js 环境下,Applet 依赖 node v...
许多语言,包括 C、C#、Go 和 Rust,都可以编译成面向基于栈的 WebAssembly 虚拟机的代码。 .NET 代码可以在任何地方运行,包括浏览器内部。 Blazor 是一个客户端库,它在 WebAssembly 上使用.NET 来支持借助 ...
但最后的高级篇中的章节没有很强的关联,可以按照随意的顺序阅读。每章内容及作者分述如下: \篇章 章 名 作者 内 容 简 介 页码 \初级篇 第1章 Qt初步实践 卢传富 建立了第一个较简单的Qt应用程序,在GUI用户界面...
但最后的高级篇中的章节没有很强的关联,可以按照随意的顺序阅读。每章内容及作者分述如下: \篇章 章 名 作者 内 容 简 介 页码 \初级篇 第1章 Qt初步实践 卢传富 建立了第一个较简单的Qt应用程序,在GUI用户界面中...