当前热点-setTimeout是什么意思?彻底理解setTimeout
之前在网上看了很多关于setTimeout的文章,但我感觉都只是点到为止,并没有较深入的去剖析,也可能是我脑袋瓜笨,不容易被点解。后面看了《你不知道的javascript-上卷》一书,决定重新再来理一次。这次我觉得我应该整明白了。于是分享给大家,文中解释有错误的部分还希望大家留言指正。
首先我们还是来看那道大家再熟悉不过的前端面试题:
(相关资料图)
for (var i = 1;i <= 5;i ++) { setTimeout(function timer() { console.log(i) },i * 1000)}
我想刚入门的童鞋或者对JS作用域、闭包以及事件循环等概念不了解的童鞋会想当然的认为这道题的答案应该是: 第一次循环,隔一秒输出1; 第二次循环,隔两秒输出2; 第三次循环,隔三秒输出3; 第四次循环,隔四秒输出4; 第五次循环,隔五秒输出5; 或者还有同学预期的结果是分别输出数字1~5,每秒一次,每次一个。
但实际结果大家去控制台打印了都知道:以一秒的频率连续输出五个6! 相信对于很多童鞋第一次看到这个结果是懵的,包括我第一次看到结果是懵逼的!
然而还没等你反应过来,面试官又要求你改动一下代码,要它以一秒的频率分别输出1,2,3,4,5。如果你不了解或者没有深入理解JS中的作用域、闭包以及事件循环,那么就可以和面试官说拜拜了。
这道题涉及到的知识点我上面已经提到过两次,这里我们还是先简单地过一下这些知识点: 1、作用域:这里我引用《你不知道的javascript》中的一个比喻,可以把作用域链想象成一座高楼,第一层代表当前执行作用域,楼的顶层代表全局作用域。我们在查找变量时会先在当前楼层进行查找,如果没有找到,就会坐电梯前往上一层楼,如果还是没有找到就继续向上找,以此类推。到达顶层后(全局作用域),可能找到了你所需的变量,也可能没找到,但无论如何查找过程都将停止。 2、闭包:我的理解是在传递函数类型的变量时,该函数会保留定义它的所在函数的作用域。读起来可能比较绕,或者可以简单的这么理解,A函数中定义了B函数并且它返回了B函数,那么不管B函数在哪里被调用或如何被调用,它都会保留A函数的作用域。 3、事件循环:这个概念深入起来很复杂,下面新开一个段落只说一些跟本文相关的内容。
说起事件循环,不得不提起任务队列。事件循环只有一个,但任务队列可能有多个,任务队列可分为宏任务(macro-task)和微任务(micro-task)。XHR回调、事件回调(鼠标键盘事件)、setImmediate、setTimeout、setInterval、indexedDB数据库操作等I/O以及UI rendering都属于宏任务(也有文章说UI render不属于宏任务,目前还没有定论),process.nextTick、Promise.then、Object.observer(已经被废弃)、MutationObserver(html5新特性)属于微任务。注意进入到任务队列的是具体的执行任务的函数。比如上述例子setTimeout()中的timer函数。另外不同类型的任务会分别进入到他们所属类型的任务队列,比如所有setTimeout()的回调都会进入到setTimeout任务队列,所有then()回调都会进入到then队列。当前的整体代码我们可以认为是宏任务。事件循环从当前整体代码开始第一次事件循环,然后再执行队列中所有的微任务,当微任务执行完毕之后,事件循环再找到其中一个宏任务队列并执行其中的所有任务,然后再找到一个微任务队列并执行里面的所有任务,就这样一直循环下去。这就是我所理解的事件循环。来,还是看个栗子:
console.log("global")setTimeout(function () { console.log("timeout1") new Promise(function (resolve) { console.log("timeout1_promise") resolve() }).then(function () { console.log("timeout1_then") })},2000)for (var i = 1;i <= 5;i ++) { setTimeout(function() { console.log(i) },i*1000) console.log(i)}new Promise(function (resolve) { console.log("promise1") resolve() }).then(function () { console.log("then1")})setTimeout(function () { console.log("timeout2") new Promise(function (resolve) { console.log("timeout2_promise") resolve() }).then(function () { console.log("timeout2_then") })}, 1000)new Promise(function (resolve) { console.log("promise2") resolve()}).then(function () { console.log("then2")})
我们来一步一步分析以上代码:
1)、首先执行整体代码,“global”会被第一个打印出来。这是第一个输出.
2)、执行到第一个setTimeout时,发现它是宏任务,此时会新建一个setTimeout类型的宏任务队列并派发当前这个setTimeout的回调函数到刚建好的这个宏任务队列中去,并且轮到它执行时要延迟2秒后再执行。
3)、代码继续执行走到for循环,发现是循环5次setTimeout(),那就把这5个setTimeout中的回调函数依次派发到上面新建的setTimeout类型的宏任务队列中去,注意,这5个setTimeout的延迟分别是1到5秒。此时这个setTimeout类型的宏任务队列中应该有6个任务了。再执行for循环里的console.log(i),很简单,直接输出1,2,3,4,5,这是第二个输出。
4)、再执行到new Promise,Promise构造函数中的第一个参数在new的时候会直接执行,因此不会进入任何队列,所以第三个输出是"promise1",上面有说到Promise.then是微任务,那么这里会生成一个Promise.then类型的微任务队列,这里的then回调会被push进这个队列中。
5)、再继续走,执行到第二个setTimeout,发现是宏任务,派发它的回调到上面setTimeout类型的宏任务队列中去。
6)、再走到最后一个new Promise,很明显,这里会有第四个输出:"promise2",然后它的then中的回调也会被派发到上面的Promise.then类型的微任务队列中去。
7)、第一轮事件循环的宏任务执行完成(整体代码可以看做宏任务)。此时微任务队列中只有一个Promise.then类型微任务队列,它里面有两个任务。宏任务队列中也只有一个setTimeout类型的宏任务队列。
8)、下面执行第一轮事件循环的微任务,很明显,会分别打印出"then1",和"then2"。分别是第五和第六个输出。此时第一轮事件循环完成。
9)、开始第二轮事件循环:执行setTimeout类型队列(宏任务队列)中的所有任务。发现都有延时,但延时最短的是for循环中第一次循环push进来的那个setTimeout和上面第5个步骤中的第二个setTimeout,它们都只延时1s。它们会被同时执行,但前者先被push进来,所以先执行它!它的作用就是打印变量i,在当前作用域找变量i,木有!去它上层作用域(这里是全局作用域)找,找到了,但此时的i早已是6了。(为啥不是5,那你得去补补for循环的执行流程了~)所以这里第七个输出是延时1s后打印出6。
10)、紧接着执行第二个setTimeout,它会先后打印出"timeout2"和"timeout2_promise",这分别是第八和第九个输出。但这里发现了then,又把它push到上面已经被执行完的then队列中去。
11)、这里要注意,因为出现了微任务then队列,所以这里会执行该队列中的所有任务(此时只有一个任务),即打印出"timeout2_then"。这是第十个输出。
11)、继续回过头来执行宏任务队列,此时是执行延时为2s的第一个setTimeout和for循环中第二次循环的那个setTimeout,跟上面一样,前者是第一个被push进来的,所以它先执行。这里会延时1秒(原因下面会解释)分别输出“timeout1”和“timeout1_promise”,但发现了里面也有一个then,于是push到then微任务队列并立即执行,输出了"timeout1_then"。紧接着执行for中第二次循环的setTimeout,输出6。注意这三个几乎是同时被打印出来的。他们分别是第十一到十三个输出。
12)、再就很简单了,把省下的for循环中后面三次循环被push进来的setTimeout依次执行,于是每隔1s输出一个6,连续输出3次。
13)、第二轮事件循环结束,全部代码执行完毕。
所以上代码的执行结果为:
global12345promise1promise2then1then2//延迟1s6timeout2timeout2_promisetimeout2_then//延迟1stimeout117 timeout1_promise20 timeout1_then6//每隔1s输出3个6
这里解释下为什么上面第11步不是延迟2秒再输出“timeout1”和“timeout1_promise”,这时需要理解setTimeout()延时参数的意思,这个延迟时间始终是相对主程序执行完毕的那个时间算的 ,并且多个setTimeout执行的先后顺序也是由这个延迟时间决定的。
再回过头来看上面那个问题,理解了事件循环的机制,问题就很简单了。for循环时setTimeout()不是立即执行的,它们的回调被push到了宏任务队列当中,而在执行任务队列里的回调函数时,变量i早已变成了6。那如何得到想要的结果呢?很简单,原理就是需要给循环中的setTimeout()创建一个闭包作用域,让它执行的时候找到的变量i是正确的。
知道了原理,解决方案就很多了,下面给出5种方案,
(1)引入IIFE
for(var i = 0;i<5;i ++) { (function(i){ setTimeout(function timer() { console.log(i) }, i * 1000); })(i);}
(2)利用ES 6引入的let关键字
for(let i = 0;i<5;i++) { setTimeout(function timer(){ console.log(i); }, i * 1000);}
for 循环头部的let 声明还会有一个特殊的行为。这个行为指出变量在循环过程中不止被声明一次,每次迭代都会声明。随后的每个迭代都会使用上一个迭代结束时的值来初始化这个变量。
(3)利用ES 5引入的bind函数
for (var i=1; i<=5; i++) { setTimeout( function timer(i) { console.log(i); }.bind(null,i), i*1000 );}
(4)利用setTimeout第三个参数
for (var i=1; i<=5; i++) { setTimeout( function timer(i) { console.log(i); }, i*1000,i );}
注:setTimeout函数第三个参数及以后的参数都可以作为timer函数的参数。
(5)把setTimeout用一个方法单独出来形成闭包
var loop = function (i) { setTimeout(function timer() { console.log(i); }, i*1000);};for (var i = 1;i <= 5; i++) { loop(i);}
好了,文章到此基本就结束了,第一次写技术类的文章,肯定有不足,希望大家能留言指出。最后请尊重我的劳动成果,转载请务必注明出处。
参考:http://www.jianshu.com/p/12b9f73c5a4fhttp://www.jianshu.com/p/e5225ba4a025
作者:jia58960 链接:https://www.jianshu.com/p/3e482748369d 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
标签:
相关推荐:
精彩放送:
- []天天要闻:名侦探柯南主题曲简谱左右手 名侦探柯南主题曲简谱
- []环球观天下!手机闪存卡哪款好?经典手机闪存卡有哪些推荐?
- []节能灯具有哪些品牌?节能灯具品牌介绍
- []全球讯息:关于《哈皮父子与水金刚》主题曲 你知道多少?
- []激光焊接机价格怎么样?激光焊接机价格参考
- []世界球精选!小键盘指法怎么操作?小键盘指法练习技巧
- []世界即时看!王者荣耀绝悟最后一关隐藏咋打?王者荣耀觉悟挑战第六关通关打法
- []发电机设备有什么型号的?关于发电机设备的介绍
- []全球快看:金山wps2012抢先版和个人版有什么不同?不同之处详解
- []wifi摄像头怎么链接?wifi摄像头连接方法
- []Makefile宏控是什么?宏控与systemProperty取名对应
- []当前速读:商鞅变法是什么意思?出自哪里?
- []焦点资讯:秘鲁币兑换人民币怎么换?10000秘鲁币等于人民币16元
- []什么是封建社会?封建社会详情介绍
- []全球热点!QGIS|构建选址模型 模型需求分析
- []【全球新视野】fate第四次圣杯战争是哪一部番剧?fate系列有没有关于第六次圣杯战争出动漫的消息
- []滚动:抖音可以查访客记录吗?抖音访客记录怎么看?
- []当前短讯!2021江西省高考的成绩怎么查询?江西省教育考试院高考成绩查询系统入口2021
- []全球头条:Ubuntu中snap是什么意思?介绍一些常用命令
- []分布式光纤测温系统 性能指标优势
- []世界速讯:视频在html不能播放器怎么办?网页播放器打不开的解决方法
- []焦点速讯:草莓的英文单词及发音 你知道多少?
- []看热讯:QT部署YOLOV5 pyqt5搭建YOLOV5的检测平台
- []天天快资讯:Oracle database 10g官方版性能拓展
- []热资讯!hr是什么意思?管理的五大原则
- []每日速看!2021年临颖一高高考成绩查询 河南漯河名列前茅的4所高中
- []全球新动态:笔记本电脑品牌有哪些推荐?五款热门品牌推荐
- []环球速递!Bo韩服跌至第三 外媒记者爆料:FPX想将Bo租借到其他LPL战队遭拒
- []焦点热议:爱宁牌电饼铛怎样?爱宁牌电饼铛的优势介绍
- []全球快消息!电烤箱烤羊肉串怎么做?电烤箱烤羊肉串做法步骤
- []Android应用Preference相关及源码浅析 Preference相关基础概念
- []ISO9000和ISO9001有什么特点?ISO9000和ISO9001作用详解
- []磊科升级版NW360怎么样?磊科升级版NW360详细介绍
- []朴敏英和李敏镐身高对比是多少?朴孝敏黄金比例身材
- []文件删除了怎么恢复?文件删除了三种恢复方法
- []读书郎学生电脑如何下载?读书郎电脑下载步骤
- []sd卡数据恢复软件有哪些?sd卡数据恢复的软件
- []天天视点!苹果手机助手哪个好?推荐几款好用的苹果手机助手
- []世界观速讯丨色度抽样怎么弄?抽樣作用的解釋
- []【天天报资讯】sin函数对照表怎么看?三角函数值对照表
- []如何打开关闭Excel2007/2010兼容性检查器?关闭技巧
- []如何在excel中画斜线?在excel中画斜线的方法
- []全球快资讯丨炉石传说美服天梯第一的冠军贼卡组分享 详细介绍
- []天天微资讯!为什么黑茶有茶梗?关于茶梗你知道多少?
- []天天快看:手机多媒体没声音是怎么回事?手机多媒体没声音怎么修?
- []世界速看:2021庆阳一中高考成绩查询 2020年庆阳市多所中学高考喜报
- []天天看热讯:华为云发布鲲鹏云服务 开启云上多元算力新赛道
- []一个没有四肢的人 却给了无数人的力量
- []新资讯:LOL各英雄的原型来源你了解几个? LOL背后的小故事
- []RCLAMP0524P超低电容TVS二极管阵列 DFN-10L封装教程
- []Module简介 module的编写方法
- []今日观点!Win7安装IE10或IE11怎么操作?离线安装注意问题
- []环球要闻:如何判断一个函数是奇函数还是偶函数?判断技巧
- []《阿凡达2》重磅回归,联手海信电视呈现光影之美
- [] 《阿凡达2》震撼首映,与海信电视携手上演“美学巅峰”
- []克罗地亚终获世界杯季军,海信电视为每个强者喝彩
- []棕榈股份景观设计展现现代与自然的和谐之美
- []世界杯消费趋势洞察:大屏电视翻倍增长,ULED电视夺冠
- []世界杯观赛调研公布: Z世代消费者首选海信电视
- []【东海期货12月20日产业链日报】能化篇:中国需求预期提振,油价小涨
- []环球即时看!三立期货12月20日早间内参——宏观
- []十八数藏创始人柏松受邀出席“西部国家版权链”发布会并作主题发言
- []广西文旅产业签约6个重大项目 计划总投资额达113.6亿元
- []今日看点:五矿地产获授7.8亿港元循环贷款额度
- []千红制药:公司临床阶段新药各项工作均在正常推进中,请关注公司定期报告与临时公告
- []世界信息:三湘印象拟非公开发行股票,募集资金总额不超16亿元
- []天天速递!12月LPR连续4个月维持不变:1年期3.65%、5年期4.30%
- []利民股份:公司子公司江苏卓邦新能源科技有限公司拟投资建设新能源电池用电解质盐、功能添加剂及电解液项目
- []每日视点!华夏幸福:相关债务置换议案获董事会通过
- []当前看点!三木集团:公司的经营一切正常
- []旅游年票发行大势所趋,专家:要体现出诚意
- []【新要闻】重庆九龙坡区落户13个重点项目 总投资139.23亿元
- []环球聚焦:住建部:1-10月老旧小区改造开工率已达101.7%
- []旭辉将配售8.4亿股现有股份 所得款净额约9.46亿港元
- []大消息!500强金融巨头罕见出手,50亿拿下上海外滩核心地块
- []全球热点评!广东肇庆1宗商住地将于2023年1月5日出让 起价1.2亿元
- []世界百事通!深圳机场启动物流设施建设项目 总投资超50亿元
- []天天讯息:新致软件:本次可转债的募投项目正在按既定计划推进,具体进度请关注公司相关公告
- []天天速读:首都机场:尤为艰难
- []公摊面积内卫生间“消失”,业主起诉房地产公司获赔偿
- []房产中介推销“添油加醋” 购房者需提高警惕
- []焦点短讯!塔里木油田向新疆南部累计供气500亿立方米
- []今日热闻!道通科技数字能源中国区产品发布会拟于12月22日举行
- []动态:新疆为何能成为中国电力新高地?
- []环球信息:上海实业控股46.08亿出售上海实森90%股权及相关债权予友邦人寿
- []全球快播:车损包括哪些险种
- []不买交强险上路会怎样 上路车辆不买交强险会怎样
- []赋能电力数字化多样场景 ——深信服云边安一体化建设方案助力发电行业数字化转型
- []要闻:网上交车保险怎么办理 如何在网上交车险
- []储能电池主要应用在哪些地方?
- []世界快消息!枣庄99元的惠民保险在哪里买 在哪里买枣庄99元的惠民保险
- []实时:怎么查询自己车辆保险是哪个公司 自己车辆保险是哪个公司怎么查询
- []滚动:因现行市况 达美乐中国特许经营商达势股份延迟全球发售
- []华发股份选举李伟杰为第十届监事会监事长?
- []今头条!美股盘前:特斯拉升逾3% 中概股轻微上升 阿里升逾3%
- []拓新药业:12月16日公司高管蔡玉瑛、渠桂荣、董春红减持公司股份合计11.14万股
- []今日聚焦!土地周报 | 重点城市土地供应“断档”,市场热度继续下行(12.12-12.18)
- []快报:远洋集团与邮储银行签署全面战略合作协议 获180亿元授信额度
- []全球观焦点:房地产逆周期之下,贝壳如何诠释“坚持难而正确的事”?
- []环球快报:道道全:12月16日公司高管张军减持公司股份合计6.5万股
- 九典制药:12月16日公司高管段立新减持公司股份合计15.51万股
- 中国建筑1-11月地产业务合约销售额3484亿元
- 全球今热点:三湘印象拟非公开发行股票 募集资金总额不超过16亿
- 全球最资讯丨璞泰来:12月16日至12月19日公司高管陈卫增持公司股份合计3.25万股
- 全球微动态丨广东东莞4宗地块56亿成交,华润联合体29亿斩获交椅湾地块
- 当前消息!万科董事会审议通过发行境外上市外资股(H股)方案
- 【全球报资讯】统联精密:12月16日公司高管杨虎增持公司股份合计5000股
- 龙软科技:12月15日公司高管任永智减持公司股份合计1.24万股
- 中交地产:3个交易日收盘价涨幅累计20%,无应披未披重大事项
- 焦点关注:天津第四批供地收官:24宗地收金99.8亿元,仅2宗溢价成交
- 直播预告|一起来看旅游业“神仙打架”名场面!
- 今日报丨南都电源:公司股东人数请参见公司定期报告
- 当前快讯:快讯丨华发股份:选举李伟杰任监事长
- 前11个月上海商品房销售面积约1526万平方米
- 世界今头条!家居丨奥普家居:回购注销限制性股票合计279.8万股
- 财面儿丨大悦城完成发行15亿元公司债券 票面利率为4.27%
- 【世界新要闻】昊华能源虚假陈述案开庭 投资者索赔金额已超亿元
- 名臣健康:12月16日公司高管彭小青减持公司股份合计27.9万股
- 简讯:招商局蛇口36.4亿元公司债将上市 利率分别为2.40%、2.80%
- 世界观点:首开股份:完成发行10亿元中期票据 票面利率5%
- 全球报道:金逸影视: 公司暂未涉及上述业务。 祝您生活愉快,投资顺利!
- 天天视讯!新希望地产累计获综合授信超480亿元
- 实时:北上广深等13市共同发布《城市治理现代化北京宣言》
- 当前简讯:洲明科技:公司具体产量、销量及投产情况详见公司于巨潮资讯网披露的定期报告及相关公告
- 当前视讯!金科股份:截至 2022年11月末,公司已到期未支付的债务本金合计金额90.91亿元
- 徽商期货荣获和讯第20届中国财经风云榜“2022年度品牌影响力期货公司”
- 2元20片退烧药冲上热搜第一 股价一字涨停!东北制药的背后是...?
- 岭南控股:截至目前,公司的控股子公司广州广之旅国际旅行社股份有限公司的出入境旅游组团业务尚未恢复
- 每日观点:金融街威斯汀酒店30.01亿元资产支持ABS已获受理
- 每日视讯:中铁建设创业大厦6.7亿元资产支持ABS(类REITs)已获受理
- 深圳南山将再发2亿元消费券,推出近百场线上线下促消费活动
- 通讯!中海企业发展30亿元公司债券票面利率为2.7%
- 全球热头条丨襄阳住房投资10亿元公司债券已获受理
- 【环球播资讯】【券商聚焦】中信证券指地产市场拐点有望显现 推荐万科企业(02202)等优秀开发企业
- ST三圣:百康药业暂无扩产计划,将全力保障生产经营,满足目前市场需求
- 至纯科技:公司8寸涂胶显影设备正在验证中
- 世界简讯:天津四批次集中供地收官,全年总成交额315亿元
- 迪马股份:陈涵辞任公司副总裁职务
- 环球观点:上周楼市整体环比略有上涨,同比持续下降,土地供求环比走高,宅地成交量增近三成
- 得利斯:今年以来,预制菜产品销量较去年同期有较大幅度增长
- 每日热文:梦洁股份:公司实施高端品牌战略,为顾客提供高品质的家居生活方式,传导充满爱的家居生活态度
- 全球热推荐:通行宝:公司近日暂无资产出售和收购重组等的计划,后续信息请以公司公告为准
- 达安基因:公司全资子公司中山生物工程有限公司已进入24小时持续生产状态中,已经面向国内市场销售
- 【天天快播报】市场看涨情绪高涨,2022年黄金有望强劲收官!
- 环球即时:美原油交易策略:下行趋势线压制明显,提防进一步下探风险
- 当前时讯:12月19日汇市观潮:欧元、英镑和日元技术分析
- 环球热点!蜂巢能源第三届电池日发布超300Ah大容量储能电池引领新风向
- 热点评!现货黄金交易策略:美联储进一步加息前景抵消美元走软影响,金价仍有见顶风险
- 【华安期货】贵金属12月18日周报:12月加息落地,金价延续偏强态势
- 每日播报!国产客机再入印尼,能否雪耻扑朔迷离
- 信息:北京大部分酒店已恢复承办婚宴、公司年会,接受年夜饭预订
- 当前通讯!长三角铁路多地客流增幅明显,加开多个方向旅客列车保障出行
- 天天速看:民航:明年1月初先恢复到疫情前七成航班量
- 当前热文:上千条鱼涌入柏林市中心,丽笙酒店内世界最大圆柱水族箱炸裂
- 全球头条:12月19日海源复材涨停分析:蔚来汽车概念股,宁德时代概念股,碳纤维概念热股
- 全球热点!12月19日全 聚 德涨停分析:餐饮,预制菜,休闲食品概念热股
- 天天速读:上海松江今年推出1701套公租房
- 博众精工:牵手蜂巢能源 叠片机设备领域将极具竞争优势
- 每日热门:中交地产:10亿元公司债券票面利率为5.9%
- 阿根廷斩获大力神杯 海信电视见证梅西圆梦卡塔尔
- 全球速看:浙江义乌3宗地块40.9亿元成交
- 天天快消息!合景泰富拟配售2.35亿股 筹资4.67亿港元
- 越秀地产上市30年,高质量发展再谋新篇
- 环球资讯:12月19日悦心健康涨停分析:养老产业,装修装饰,口腔概念热股
- 全球信息:12月19日黑芝麻涨停分析:锂电池,新能源汽车,休闲食品概念热股
- 利德治疗仪 多年良心价格回报客户
- 梅西加冕!海信电视为潘帕斯雄鹰喝彩
- 观速讯丨install安装命令的常见用法 install有哪些优点?
- 天天快看点丨vue怎么引入阿里巴巴图标?引入的方法教程
- 世界热头条丨英伟达开发板中的编译系统 能否在ZC706的板子上执行?
- 全球今亮点!sprintf函数是什么?sprintf函数用法的详解
- 全球快播:什么是黑苹果系统?黑苹果Mac系统安装教程
- 今日精选:Linux命令之restore命令 使用语法及参数说明
- 报道:ICMP是什么意思?ICMP的详解
- 世界消息!Steam账号怎么注册?Steam账号注册流程
- 【世界快播报】深入理解BootStrap--面板panel BootStrap的原理分析
- 【环球热闻】杳无音信拼音怎么读?杳无音信的含义
- 送婴儿选什么礼物好?送婴儿礼物排行榜
- 当前报道:什么是audit? audit可以用来干什么?
- 当前热议!什么是 “云”?云的最后形成
- group by是什么意思?关于group by的用法和原理
- 全球消息!好莱坞十大最可爱的女演员是谁?玛丽昂歌迪亚仅排末尾
- 天天热议:【音频】syntax How to Write Custom Syntax
- JAVA的forEach用法是什么?JAVA的forEach的格式
- 【环球播资讯】大蛇丸的儿子的母亲 大蛇丸的老婆是谁?
- 环球滚动:战地4配置要求有哪些?推荐几个战地4配置
- 世界球精选!石家庄核酸检测20-22号完成 24号低风险区域会让出门吗?
- 天天即时看!QPS是什么?QPS的计算方法
- 全球今亮点!box-shadow属性语法 box-shadow属性详解
- 微头条丨咐组词和拼音是什么?咐怎么读?
- linux中常用的sftp命令有哪些?sftp介绍
- 即时焦点:youbastard怎么发音?youbastard的含义
- 世界速递!sql中的left join 查询 left join之后的记录有几条?
- 全球观点:瘦金体由谁所创?关于瘦金体由谁所创的介绍
- 如何禁用Windows期自动更新?禁用方法步骤
- 全球信息:乘风破浪的姐姐四公淘汰了谁?乘风破浪的姐姐复活名单
- 环球报道:泰山门票多少钱一张2022 泰山门票价格
- 环球速递!Windows 10怎么重新安装微软商店Microsoft Store?方法步骤
- 天天热讯:《爱的厘米》好看吗?佟丽娅佟大为撒狗粮 郭家铭与男主再续兄弟情
- 世界热议:林丹的个人资料曝光 林丹是谁?