问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JS中怎样操作代码执行的先后顺序

发布网友 发布时间:2023-07-28 17:45

我来回答

1个回答

热心网友 时间:2024-11-22 19:56


这次给大家带来JS中怎样操作代码执行的先后顺序,JS操作代码执行先后顺序的注意事项有哪些,下面就是实战案例,一起来看一下。
一、js--->单线程

??严格意义上来说,javascript没有多线程的概念,所有的程序都是单线程依次执行的。

??1、什么是单线程?

??通俗点说,就是代码在执行过程中,另一段代码想要执行就必须等当前代码执行完成后才可以进行。我们拿一段代码来解释一下吧
for(var i=1;i<=3;i++){
setTimeout(function(){
console.log(i); //输出:4,4,4
},0)
}
??我们来看一下上面的这段代码,既然延时器时间设置为0,那么应该执行一遍循环就应该立即打印出一个i,但是最终的打印结果为:4,4,4。之所以会出现上面的结果,正是因为js代码是单线程应用。

??在执行过程中,先遇到for循环,for循环先进入线程。当i=1时,循环走到setTimeOut后,此时的for循环还没有执行完成,setTimeOut就会被放入一个地方(线程池)等待执行。此时for循环继续执行,当i=2时,for循环仍没有执行完,这时的setTimeOut仍会被放在线程池中等待执行??依次类推,直到for循环转完3遍后,for循环执行完了,此时线程空闲了,在线程池中等待执行的setTimeOut依次执行打印i,而for循环执行完成后,i变成了4,所以打印出了三个4。

??2、如果想要改变上面的状况可以运用以下代码
//将var变为let
for(let i=1; i<=3; i++){
setTimeOut(function(){
console.log(i); //输出的结果为1,2,3
},0);
}
//用自执行函数进行包裹
for(var i=1; i<=3; i++){
!function(i){
setTimeOut(function(){
console.log(i); //输出的结果为1,2,3
},0);
}(i)
}
二、js中的函数作用域和代码的执行

??>>>函数作用域

我们先来了解一下以下几个概念:

??1、在js语言中,没有类似于c语言这样的块级作用域。

??2、js语言中的顶级作用域为window对象范围内,称为全局作用域,在全局作用域中声明的变量为全局变量。

??3、js函数范围内的变量只能在函数内部使用,函数外部无法使用,这样的变量为局部变量。

??4、js函数可以嵌套,多个函数的嵌套构成了作用域的层层嵌套,这称为js中的作用域链。

??5、js作用域链变量访问规则:

????(1)、当前作用域内存在要访问的变量时,则使用当前作用域中的变量。

??? (2)、当前作用域中不存在要访问的变量时,则会到上一层作用域中寻找,直到全局作用域。

??>>>执行顺序

??js代码执行分为两个部分:

??1、代码的检查装载阶段(预编译阶段),此阶段进行变量和函数的声明,但是不对变量进行赋值,变量的默认值为undefined。

??2、代码的执行阶段,此阶段对变量进行赋值和函数的声明。

看了上面的一些具体的概念,我们拿一段代码进行举例说明:
var a=1; //声明了一个全局变量
function func(){
console.log(a); //输出:undefined。打印a,而在func这个作用域中已经声明了a变量,按照js的执行顺序,此时的a并未被赋值。
var a=1;
console.log(a); //输出:1。
}
func();
??看上面的代码:第一个a输出undefined。原因:js作用域链的访问规则,当前作用域内存在要访问的变量a,所以使用当前作用域中的变量。再根据js代码的执行顺序,此时的a只是声明了而并未被赋值,默认为undefined,所以输出undefined。
??而第二个a,输出1,正是因为此时的a已经被声明且被赋值,所以a输出1。
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
vue.js搭建图书管理平台的技术解答

vue.js常用指令总结归纳

JS按钮禁用和启用使用详解
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 火锅餐厅厨房有哪些 小火锅厨房设备有哪些 哪些食物清爽入味不油腻,超健康,几分钟就出锅呢? 为什么叶文洁最终选择向三体舰队发送信息? 如果没有叶文洁,三体人是否能发现地球? 流浪地球2短信谁发的 石化产业和纺织产业的区别 CAD标注圆的半径时为什么只能标在圆的外面 怎样才能标注在院里 我的女友是九尾狐中尾狐头发的揪揪是怎么扎的?就是那个犄角、谢谢 怎么给缺牙巴编头发 ...没有另外绑定支付宝和银行卡,也没有用我的支付宝付款,想问她是怎么... 当右脚顺时针旋转时,右手划6,右脚就会不自觉地逆时针旋转,用神经科学怎 ... 杨姓有哪些人物? 这是个新闻标题,请分析一下语法成分并翻译。尤其是as。关于英国全民医疗... 这是个标题,该怎么翻译呢??? 汉译英 这是个标题 要翻译成英语 麦克风和音响不能同时有声音,怎么办 音响两个喇叭不同时响 1971年阴历9月18日是啥星座 和VPDN都是什么,有什么区别 我是71年阴历8月27出生的,是什么星座的 台球打九球用小的打进大的可以吗 中国最早的报纸是西汉的什么? 哈尔滨太平机场到平房火车站多少公里平房火车站到哈尔滨太平国际_百度... 建筑钢管ΦD(4)是什么 您好,我想问一下从哈尔滨太平机场到高铁站有地铁吗? 上海山海茶点为什么都关了 上海哪有好吃的晚茶 描写玉佩的外表的词语 肺癌动完手术已经一年了,又转移到右肺上,还可以再动手术吗。 关于肺癌晚期是否要做手术? ...一个求推荐一性价比高点,穿墙强,信号稳定,最好有5G信号 ...下列哪种物质对人体的生理活动也有调节作用( )A.蛋白质B.二氧化碳C... 除了激素能调节生命活动外,对人体生理活动有调节作用的物质还有( ) 盘锦到辽源的客车行走路线 是啥 经过铁岭清河区不? 辽宁铁岭清朝初期范围 铁岭下面有几个市 铁岭有几个区,竟是什么区啊 二年级语文上册的反义词 海南买的包包怎么售后 维延斯灯饰是名牌吗? 贴片led护栏管特点以及厂家价格介绍