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并注册函数,当指定 ...
随机推荐
- display:none和visibility:hidden的区别?
css控制元素不可见的方法 { display: none; /* 不占据空间,无法点击 */ } /************************************************* ...
- 直通BAT面试题库锦集
01 python面试题(汇总) 02 面向对象 03 网络和并发编程 04 模块 05 设计模式 06 前端 07 Django框架 08 Flask 09 tornado 10 DB
- react native ios 上架
1.申请开发者账号,去苹果开发者中心申请 2.applicationloader 集申请证书.真机调试.发布于一身,避免繁琐的官网申请过程 http://www.applicationloader.n ...
- 原生js动态创建、获取、删除属性的几种方式
1.创建属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- 用阿里官网提供的plupload oss的web直传,视频上传进行前端验证它的时长,尺寸,大小等。替换上一个不需要的单个视频
accessid = '' accesskey = '' host = '' policyBase64 = '' signature = '' callbackbody = '' filename = ...
- PowUp渗透脚本基本模块
PowUp脚本也位于PowerSploit下Privesc模块下 通常,在 Windows 下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们 ...
- [BZOJ3550] [Sdoi2014]数数
Description 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3 ...
- Netty - 粘包和半包(上)
在网络传输中,粘包和半包应该是最常出现的问题,作为 Java 中最常使用的 NIO 网络框架 Netty,它又是如何解决的呢?今天就让我们来看看. 定义 TCP 传输中,客户端发送数据,实际是把数据写 ...
- Android WebSocket实现即时通讯功能
最近做这个功能,分享一下.即时通讯(Instant Messaging)最重要的毫无疑问就是即时,不能有明显的延迟,要实现IM的功能其实并不难,目前有很多第三方,比如极光的JMessage,都比较容易 ...
- pycharm(社区版2019.1版本)打开README.md文件卡死解决办法
现象:pycharm(社区版2019.1版本)打开README.md文件卡死 解决办法: 将插件Markdown support前的勾选√去掉,保存修改后重启pycharm即可