- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 图解JavaScript Promises 和 Async/Await
你是否曾经遇到JS代码并没有按照你预期的方式运行?似乎函数是在随机、不可预测的时间执行的,或者执行被延迟了。如果是这样,那么你有可能正在处理ES6引入的一项很酷的新功能:promise!我多年以来的好奇心得到了回报,而我不眠之夜又一次给了我时间制作一些动画。是时候讨论Promise了:为什么要使用promise?Promise在幕后是如何工作的?我们如何以最现代的方式编写promise呢?简介在编写JavaScript的时候,我们经常不得不去处理依赖于一些其它任务的任务!比如,我们要获取一副图像,
2020-08-13 17:02:00 575
原创 图解JavaScript生成器和迭代器
ES6引入了一个很酷的东西,叫做生成器(generator)函数。每当我问人们有关生成器函数的问题时,得到的回复基本上都是:“我曾看到过一次,没搞明白,然后就再也没有看到过”,“哦,天哪,我读过很多有关生成器函数的博客文章,但依然还没有搞明白”,“我是搞明白了,但是为什么有人会用它啊?”,????也许那只是我一直在与自己进行的对话,因为那是我很长一段时间以来习惯的思考方式!但是生成器函数是真的很酷。那么,什么是生成器函数呢?下面,我们先来看一个常规的老式函数。????????是的,这绝对没什么特别的!它只
2020-08-13 17:01:05 551
原创 图解JavaScript原型继承
你有没有想过为什么我们可以在字符串、数组或对象上使用诸如.length、.split()、.join()这些内置方法呢?我们从来没有明确指定过它们,它们到底是从哪里来的呢?现在别说“哈哈,没人知道,这就是神奇的JavaScript????????♂️”。这实际上是因为一种叫做原型继承(prototypal inheritance)的玩意儿。它很棒,而且我们用到它的次数比意识到它存在的次数要多得多!我们经常要创建很多相同类型的对象。假设我们有一个网站,在这个网站上,人们可以浏览狗!对每一只狗,我们都需要
2020-08-13 16:59:46 537
原创 图解JavaScript引擎
JavaScript很酷,但是机器是如何才能真正理解我们所编写的代码呢?作为JavaScript开发人员,我们通常不必自己处理编译器。不过,一定要了解JavaScript引擎的基础知识,看看它如何处理我们对人类友好的JS代码,并将其转换成机器可以理解的东西!????请注意:这篇文章主要基于Node.js和基于Chromium的浏览器使用的V8引擎。HTML解析器遇到script标记,代码从网络、缓存或已装好的service worker加载。响应是把请求的脚本作为字节流,由字节流解码器负责!字节流解
2020-08-13 16:59:13 503
原创 图解JavaScript作用域与作用域链
现在该讲作用域链了。在本文中,我假设你了解执行上下文的基础知识:尽管如此,我也会很快就此发表一篇文章。????我们来看看如下代码:const name = "Lydia"const age = 21const city = "San Francisco"function getPersonInfo() { const name = "Sarah" const age = 22 return `${name} is ${a
2020-08-13 16:58:35 491
原创 图解JavaScript变量提升(hoisting)
变量提升是每个JS开发人员都听说过的那些术语之一,因为你在搜索引擎上搜索烦人的错误,并且最终到StackOverflow上查找时,有人会告诉你这个错误是因为变量提升(hoisting)导致的。那么,什么是变量提升呢?(BTW,作用域会在另一篇文章中介绍,我希望保持文章小而专注)如果你是JavaScript新手,那么你可能已经遇到过一些怪异的行为,比如,有些变量的值会偶然是undefined、抛出了ReferenceError错误,等等。变量提升经常被解释为_将变量和函数放到文件的顶部_。不过,尽管变量提.
2020-08-13 16:52:12 532
原创 图解JavaScript事件循环
事件循环(Event Loop)是所有JavaScript开发者无论如何都要搞定的知识点之一,但是对于初学者来说,最初理解起来可能会有点困难。本文通过低分辨率的gif图像,以可视化的形式直观地讲解事件循环的机制。首先我们来看看,事件循环是什么?为什么我们应该关注它呢?我们知道,JavaScript是单线程的,也就是说,一次只能执行一个JavaScript任务。一般情况下,这不是什么大问题。不过,请想像一下,如果我们正在执行一个耗时30秒的任务,在此任务期间,我们得等待30秒才能进行其它任何操作(默认情.
2020-08-13 16:24:12 579
原创 30分钟学会UML类图
UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作。一般说来,在UML图中,只要掌握类图、用例图、时序图的使用,就能完成大部分的工作。也就是说,掌握UML的20%,就能做80%的事情。对于程序员来说,最频繁使用的莫过于类图。因此,这里我们只讲解UML类图。至于其它UML图,请在以后的工作中参阅更多UML学习资料继续学习。类图是面向对象系统建模中最常用和最重要的图,是定义...
2020-02-28 11:57:46 1363
翻译 JavaScript 闭包工作原理
如果是新手 JavaScript 开发人员,你可能已经听说过闭包这个关键字,但是大多数人可能还没有。或者,你是正在寻找新机会的开发人员,并且以前从未用过闭包,但是你知道这对于 JavaScript 开发人员职位的面试至关重要。通常要了解闭包,仅阅读一篇文章是不够的。但在本文中,你将学习所有用到的概念来进行解释它,以及这些概念如何一清二楚地协同工作。闭包存储一个函数中的当前定义以及作用域信息,将...
2020-01-14 12:16:56 213
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人