当前位置: 首页 > news >正文

网站进入沙盒的表现/长沙网站制作关键词推广

网站进入沙盒的表现,长沙网站制作关键词推广,一个ip地址上可以做几个网站吗,做网站怎么连数据库今天在回顾JavaScript进阶用法的时候&#xff0c;发现一个有趣的问题&#xff0c;话不多说&#xff0c;先上代码&#xff1a; for(var j0;j<10;j){setTimeout(function(){console.log(j)},5000) } 看到这三行代码&#xff0c;也许你会不耐烦道&#xff1a;又要讲闭包&#x…

今天在回顾JavaScript进阶用法的时候,发现一个有趣的问题,话不多说,先上代码:

for(var j=0;j<10;j++){setTimeout(function(){console.log(j)},5000)
}

看到这三行代码,也许你会不耐烦道:又要讲闭包?要吐了好么?别急,让我们先来思考一下,这段代码在浏览器中的执行结果是什么?

执行结果显示,浏览器打印出了十个10

家都知道,JavaScript在ES6出现以前,是没有块状作用域的,这就意味着, 在for循环中用var定义的变量j,其实是属于全局的,即在全局范围内都可以被访问到,既然如此,那其实整个全局作用域中就只有一个j,每次for循环都i是在更新这个j。

那么现在关键的问题在于,为什么整个for循环会先于setTimeout执行,而不是我们正常理解的,一次迭代执行一次。

这就涉及到了JavaScript的核心特性:单线程。

JavaScript设计的初衷,是浏览器用来与用户进行交互和DOM操作的。这就决定了它必须是单线程的,设想JavaScript同事有两个线程,一个线程在DOM节点添加内容,一个线程删除该节点,浏览器就会出现混乱。所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,将来也不会改变。

单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。

为了优化单线程的性能,JavaScript将任务分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有主线程中的同步任务执行完毕,异步任务才会进入执行队列执行。只要主线程空了,就会去读取"任务队列",这就是JavaScript的运行机制。这个过程会不断重复。

而setTimeout,就被JavaScript定义为异步任务。每次for循环的迭代,都将setTimeout中的回调函数加入任务队列等待执行。也就是说,只有同步任务中的for循环完全结束,主线程中才会去任务队列中找到尚未执行的十个setTimeout(十次迭代)回调函数并顺序执行(先进先出)。而此时,i已经经过循环结束变成了10,所以,此时主线程执行的,是十个一摸一样的打印i的回调函数,即打印十个10。至此就完美回答了第一和第二个问题,文章开头的代码与下面的代码其实是等价的:

    for(var i=0;i<10;i++){}setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)setTimeout(console.log(i),5000)

 

 

转载于:https://www.cnblogs.com/QianBoy/p/8439030.html

http://www.jmfq.cn/news/5116357.html

相关文章:

  • 阿里云上能建设自己的企业网站/优化百度涨
  • 毕业设计做课程网站好/免费推广平台哪些比较好
  • 无锡鸿源建设集团有限公司网站/重庆百度关键词推广
  • 政府网站建设赏析/企业网站建设制作
  • 鲲鹏建设集团有限公司网站/郴州网站seo外包
  • 房地产培训网站建设/优化网站性能
  • 发布app需要什么条件/seo的基本内容
  • 繁体网站怎么做/seo免费推广
  • 简易网站制作软件/深圳做网站公司
  • 网站图片上的水印怎么做/游戏推广员拉人技巧
  • 国家安全部门是干什么的/网站优化排名资源
  • 网站被攻击了怎么处理/大数据精准客户
  • 网站开发社区/广告投放怎么做
  • 如何创建微信公众号免费/长沙seo优化报价
  • 南海网站建设多少钱/抖音宣传推广方案
  • b2b主要网站有哪些/宁波seo博客
  • 东莞做网站的网络公司/微信小程序开发费用
  • 重庆公司建网站流程/网络优化的基本方法
  • 黑客做网站/网络营销课程
  • 有没有做网站一次付费/活动营销案例100例
  • 浙江建设职业技术学院官方网站/网站建设的一般步骤
  • 自适应企业网站源码/品牌营销推广公司
  • wordpress 中文安装教程/关键词智能优化排名
  • ssm框架网站开发 参考文献/seo顾问是什么职业
  • 深圳实力网站建设/服务营销案例
  • 东莞网站建设案例/百度权重查询爱站网
  • 商城网站项目工作的流程/seo服务销售招聘
  • 高端网站建设 上海/网络推广费用一般多少
  • 个人网站制作模板图片/seo描述快速排名
  • 如何做网站设计/360优化大师旧版本