你对JavaScript了解多少?大神详细解读JavaScript的框架结构(2)
下面的例子中,基本事件永远不会执行,lonley 函数在没有返回值的情况下不断地调用自身,最终会导致栈溢出。
为什么 JavaScript 是单线程的? 一个线程代表着在同一时间段内可以单独执行的程序部分的数目。要想查看一门语言是单线程的还是多线程的,最简单的方式就是了解它有多少个调用栈。JS 只有一个,所以它是单线程语言。 这样不是会阻碍程序运行吗?如果我运行多个耗时的阻塞操作,例如 HTTP 请求,那么程序必须得在每一个操作得到响应之后才能执行后面的代码。 为了解决这个问题,我们需要找到一种可以在单线程下异步完成任务的办法。事件循环就是用来发挥这个作用的。 事件循环 到现在为止,我们谈到的内容大多包含在 V8 里面,但是如果你去查看 V8 的代码库,你会发现它并不包含例如 setTimeout 或者 DOM 的实现。事实上,除了运行引擎之外,JS 还包括浏览器提供的 Web API,这些 API 用于拓展 JS。 总结 关于制作一门编程语言,其实还有很多内容,并且语言的实现在这些年也是不断变化的。我希望这两篇博客可以帮助你成为一名更好的 JS 程序员,并且接受 JS 中那些晦涩难懂的内容 。对于诸如“V8”,“事件循环”,“调用栈”这样的术语,你现在应该熟悉了。 大部分的学生(比如我)是从一个新的框架起步,之后再去学习原生 JS。现在他们应该熟悉代码背后发生的事情了,反过来,这将帮助他们写出更好的代码。
(编辑:ASP站长网) |