设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

你对JavaScript了解多少?大神详细解读JavaScript的框架结构(2)

发布时间:2019-08-01 12:16 所属栏目:21 来源:程序员私房菜
导读:下面的例子中,基本事件永远不会执行,lonley 函数在没有返回值的情况下不断地调用自身,最终会导致栈溢出。 functionlonely(){ if(false){ return1;//基本事件 } lonely();//递归调用} 为什么 JavaScript 是单线程

下面的例子中,基本事件永远不会执行,lonley 函数在没有返回值的情况下不断地调用自身,最终会导致栈溢出。

  1. function lonely() { 
  2.  if (false) { 
  3.  return 1; // 基本事件 
  4.  } 
  5.  lonely(); // 递归调用} 

为什么 JavaScript 是单线程的?

一个线程代表着在同一时间段内可以单独执行的程序部分的数目。要想查看一门语言是单线程的还是多线程的,最简单的方式就是了解它有多少个调用栈。JS 只有一个,所以它是单线程语言。

这样不是会阻碍程序运行吗?如果我运行多个耗时的阻塞操作,例如 HTTP 请求,那么程序必须得在每一个操作得到响应之后才能执行后面的代码。

为了解决这个问题,我们需要找到一种可以在单线程下异步完成任务的办法。事件循环就是用来发挥这个作用的。

事件循环

到现在为止,我们谈到的内容大多包含在 V8 里面,但是如果你去查看 V8 的代码库,你会发现它并不包含例如 setTimeout 或者 DOM 的实现。事实上,除了运行引擎之外,JS 还包括浏览器提供的 Web API,这些 API 用于拓展 JS。

总结

关于制作一门编程语言,其实还有很多内容,并且语言的实现在这些年也是不断变化的。我希望这两篇博客可以帮助你成为一名更好的 JS 程序员,并且接受 JS 中那些晦涩难懂的内容 。对于诸如“V8”,“事件循环”,“调用栈”这样的术语,你现在应该熟悉了。

大部分的学生(比如我)是从一个新的框架起步,之后再去学习原生 JS。现在他们应该熟悉代码背后发生的事情了,反过来,这将帮助他们写出更好的代码。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读