js中关于执行的顺序及变量存放方式的一点记录
Markdown在线编辑器 - www.MdEditor.com
1 首先关于数据类型,有基本数据类型,和引用数据类型
基本数据类型有:number,string,boolean等;引用数据类型一般指object
栈:大小固定;堆:大小不固定;栈中存放一些基本的数据类型,和引用数据类型的地址;堆中存放引用数据类型的实际值。
造成问题,当两个变量指向同一个地址时,引起数据的同步修改
<script>window.onload =function(){var arr1 =[1,2,3,4,5];//浅拷贝var arr2 = arr1;arr2[2]=100;console.log(arr1);//[ 1, 2, 100, 4, 5 ]console.log(arr2);//[ 1, 2, 100, 4, 5 ]//深拷贝var arr3 =[];for(let i in arr1){arr3[i]= arr1[i];}arr3[2]=555;console.log(arr1);//[ 1, 2, 100, 4, 5 ]console.log(arr3);//[ 1, 2, 555, 4, 5 ]}</script>
2 js是单线程的语言,只有一个执行的进程,在解析执行js文件的时候,对一些造成异步的函数,会将该处理事件放入宏任务待执行队列,和微任务待执行队列
宏任务与微任务的执行顺序是,执行一个宏任务后,执行所有的微任务,在接着执行宏任务
宏任务:setTimeout,setInterval等;微任务:Promise.then catch finally;process.nextTick;等
<script>window.onload =function(){setTimeout(()=>{console.log('1级宏事件1');newPromise((resolve)=>{ resolve()}).then(()=>{console.log('2级微事件3');})});console.log('主事件1');newPromise((resolve)=>{console.log('主事件2');resolve()}).then(()=>{console.log('1级微事件1');setTimeout(()=>{console.log('2级内宏事件2')});}).then(()=>{console.log('1级微事件2')})}</script>
输出:
主事件1
主事件2
1级微事件1
1级微事件2
1级宏事件1
2级微事件3
2级内宏事件2
js中关于执行的顺序及变量存放方式的一点记录的更多相关文章
- 进阶学习js中的执行上下文
在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; functio ...
- js中的执行环境及作用域
最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧. 首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念.执 ...
- mysql 中语句执行的顺序以及查询处理阶段的分析
原文链接:http://www.php.cn/mysql-tutorials-408865.html 本篇文章给大家带来的内容是关于mysql中语句执行的顺序以及查询处理阶段的分析,有一定的参考价值, ...
- javascript中var let const三种变量声明方式
javascript中var let const三种变量声明方式 1.var ①var表示声明了一个变量,并且可以同时初始化该变量. ②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函 ...
- JS中函数执行顺序的问题?
作者:知乎用户链接:https://www.zhihu.com/question/23564807/answer/82996422来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- Promise对象及它在js中的执行顺序
关于Promise对象的学习及它的执行顺序 学习阮一峰老师的ES6入门后的记录 1.promise的定义 promise是一个对象,通常包裹着一个异步操作,promise对象提供一些接口的方法,返回一 ...
- js中的执行上下文,菜鸟入门基础。
console.log(a); //Uncaught ReferenceError: a is not defined 因为没有定义a所以报错了. var a = 52; console.log(a) ...
- 关于javascript中的 执行上下文和对象变量
什么是执行上下文 当浏览器的解释器开始执行我们的js代码的时候,js代码运行所处的环境可以被认为是代码的执行上下文,执行上下文(简称-EC)是ECMA-262标准里的一个抽象概念,用于同可执行代码(e ...
- JS中的执行机制(setTimeout、setInterval、promise、宏任务、微任务)
1.执行机制 JS 是单线程的,处理 JS 任务(程序)只能一个一个顺序执行,所以 JS 中就把任务分为了同步任务和异步任务.同步的进入主线程先执行,异步的进入Event Table并注册函数,当指定 ...
随机推荐
- Hbase入门(五)——客户端(Java,Shell,Thrift,Rest,MR,WebUI)
Hbase的客户端有原生java客户端,Hbase Shell,Thrift,Rest,Mapreduce,WebUI等等. 下面是这几种客户端的常见用法. 一.原生Java客户端 原生java客户端 ...
- UWP开发入门(二十四)—— Win10风格的打印对话框
虽然经常看到阿迪王发“看那个开发UWP的又上吊了”的图……还是忍不住重启一下这个系列.最近有用到UWP的print API,特地来写一篇给某软的这个伟大构想续一秒. 之前的打印对话框差不多长成这样: ...
- 【包教包会】Chrome拓展开发实践
首发于微信公众号<前端成长记>,写于 2019.10.18 导读 有句老话说的好,好记性不如烂笔头.人生中,总有那么些东西你愿去执笔写下. 本文旨在把整个开发的过程和遇到的问题及解决方案记 ...
- Oracle VM VirtualBOX桥接网卡
1.在VirtualBOX设置中的网络菜单,连接方式选择桥接网卡 2.启动系统,设置静态IP sudo vim /etc/network/interfaces auto enp0s3 ...
- Luogu P2297 刷图 DP
题目背景 loidc,LOI中的传说级哲♂学家,曾经创造一天内入坑maxlongint个弃坑0x7fffffff个的神奇纪录.目前,loidc最喜欢的游戏就是地下城与勇♂士. 题目描述 Loidc是一 ...
- (21)ASP.NET Core EF创建模型(关系)
1.关系 关系定义两个实体之间的关系.在关系型数据库中,这由外键约束表示. 2.术语定义 有许多术语用于描述关系:●相关实体:这是包含外键属性的实体.有时称为关系的"子级".●主体 ...
- MyBatis 开发手册
这一遍看Mybatis的原因是怀念一下去年的 10月24号我写自己第一个项目时使用全配置文件版本的MyBatis,那时我们三个人刚刚大二,说实话,当时还是觉得MyBatis挺难玩的,但是今年再看最新版 ...
- nginx::certbot制作免费证书
环境 Ubuntu8.04apt-get update apt-get install software-properties-common add-apt-repository ppa:certbo ...
- 利用git工具将自己的代码文件上传到Github
GitHub 是一个面向开源及私有软件项目的托管平台,作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及 ...
- 11.Nginx架构进阶
1.如何将LNMP拆分为LNP+MySQL 1.备份172.16.1.7上的数据库信息 [root@web01 ~]# mysqldump -uroot -p'000000' --all-databa ...