加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

你对JavaScript掌握多少?项目大牛详细解读JavaScript框架结构

发布时间:2019-09-30 04:16:39 所属栏目:优化 来源:IT小菠萝
导读:副标题#e# 对于任何一个程序员来说,最关注的两个问题无非就是:时间复杂度和空间复杂度。第一部分介绍了 V8 为改进 JavaScript 执行时间所做的速度提升和优化,第二部分则将着重介绍内存管理方面的知识。 这篇文章,小编简要概述了编程语言的一般工作机制

你对JavaScript掌握多少?项目大牛详细解读JavaScript框架结构

 

栈溢出

在不对栈执行弹出的情况下,可连续压栈的数目取决于栈的大小。如果超过了这个界限之后还不断地压栈,最终会导致栈溢出。chrome 浏览器将会抛出一个错误以及被称为栈帧的栈快照。

递归:递归指的是函数调用自身。递归可以大幅度地减少执行算法所花费的时间(时间复杂度),不过它的理解和实施较为复杂。

下面的例子中,基本事件永远不会执行,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。现在他们应该熟悉代码背后发生的事情了,反过来,这将帮助他们写出更好的代码。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读