JavaScript 核心原理精解
文章平均质量分 93
通过招聘网站可以看出,大厂普遍要求前端人才精通 JavaScript,其他各种高薪岗位也不乏“理解并掌握 JavaScript”等字眼。作为前端人,我们必须认识到这样一个现状:想要在这一领域走得长远,就必须具备扎实的 JavaScript 编码能力,它既是前端人的自检清单,更是进阶的必修课。
从人到猿
带薪摸鱼只是不亏,让老板为学习买单才是血赚
展开
-
JS 的数据类型你了解多少
作为 JavaScript 的入门级知识点,JS 数据类型在整个 JavaScript 的学习过程中其实尤为重要。因为在 JavaScript 编程中,我们经常会遇到边界数据类型条件判断问题,很多代码只有在某种特定的数据类型下,才能可靠地执行。希望通过本讲的学习,能够熟练掌握数据类型的判断以及转换等相关知识点,并且在遇到数据类型判断以及数据类型的隐式转换等问题时可以轻松应对。原创 2021-10-19 10:30:27 · 278 阅读 · 0 评论 -
如何实现一个深浅拷贝
把深浅拷贝单独作为一讲来专门讲解,是因为在 JavaScript 的编程中经常需要对数据进行复制,什么时候用深拷贝、什么时候用浅拷贝,是开发过程中需要思考的;同时深浅拷贝也是前端面试中比较高频的题目。因此,深入学习这部分知识有助于提高手写 JS 的能力,以及对一些边界特殊情况的深入思考能力,这一讲会结合最基础但是又容易写不好的的题目来帮助提升。原创 2021-10-19 16:19:07 · 3970 阅读 · 0 评论 -
探究 JS 常见的 6 种继承方式
简单介绍一下继承的概念。继承是面向对象的,使用这种方式我们可以更好地复用以前的开发代码,缩短开发的周期、提升开发效率。继承在各种编程语言中都充当着至关重要的角色,特别是在 JavaScript 中,它天生的灵活性,使应用场景更加丰富。JavaScript 的继承也经常会在用在前端工程基础库的底层搭建上面,在整个 JavaScript 的学习中尤为重要。原创 2021-10-21 17:03:26 · 577 阅读 · 0 评论 -
继承进阶:如何实现 new、apply、call、bind 的底层逻辑?
JavaScript 中的 apply、call 和 bind 方法是前端代码开发中相当重要的概念,并且与 this 的指向密切相关。很多人对它们的理解还比较浅显,如果想拥有扎实的 JavaScript 编程基础,那么必须要了解这些基础常用的方法。原创 2021-10-22 16:07:47 · 336 阅读 · 0 评论 -
JS 闭包难点剖析
JavaScript 中的闭包是相当重要的概念,并且与作用域相关知识的指向密切相关,在前端面试过程中经常会被提及。因此希望通过这篇文章,能够彻底掌握它。原创 2021-10-26 17:43:52 · 140 阅读 · 0 评论 -
带你一起实现 JSON.Stringify 方法
手工实现一个 JSON.stringify 的方法原创 2021-10-27 15:53:11 · 2106 阅读 · 0 评论 -
帮你梳理眼花缭乱的数组 API
数组作为一个最基础的一维数据结构,在各种编程语言中都充当着至关重要的角色,你很难想象没有数组的编程语言会是什么模样。特别是JavaScript ,它天生的灵活性,又进一步发挥了数组的特长,丰富了数组的使用场景。可以毫不夸张地说,不深入地了解数组,就不足以写好 JavaScript。 随着前端框架的不断演进,React 和 Vue等 MVVM框架的流行,数据更新的同时视图也会随之更新。在通过前端框架实现大量的业务代码中,开发者都会用数组来进行数据的存储和各种“增删改查”等操作,从而实现对应前端视图层的原创 2021-10-28 15:57:48 · 326 阅读 · 0 评论 -
如何理解 JS 的类数组?
在前端工作中,开发者往往会忽视对类数组的学习,其实在高级 `JavaScript `编程中经常需要将类数组向数组转化,尤其是一些比较复杂的开源项目,经常会看到函数中处理参数的写法原创 2021-10-28 17:11:12 · 369 阅读 · 0 评论 -
实现数组扁平化的 6 种方式
数组的扁平化其实就是将一个嵌套多层的数组 array(嵌套可以是任何层数)转换为只有一层的数组原创 2021-10-29 11:04:04 · 8683 阅读 · 3 评论 -
如何用 JS 实现各种数组排序?
如何用 JS 实现各种数组排序 数组排序是在 JavaScript的编程过程中经常会遇到的,也是面试中会考察的,尤其是调用 sort方法,不过今天主要围绕数据结构排队进行讲解,关于 sort方法的详细剖析会在下一讲探讨。为了方便更好地理解本讲的内容,在开始前请先思考几个问题。数据结构中稳定的排序算法有哪些?不稳定的排序算法有哪些?时间复杂度和空间复杂度分别代表了什么?时间复杂度&空间复杂度 在说排序算法之前,需要重新了解一下时间复杂度和空间复杂度。 关于时间复杂度,我们说的更原创 2021-10-29 14:13:18 · 609 阅读 · 0 评论 -
sort排序方法的实现原理
数组排序在日常工作中经常会出现,除了上一篇介绍的排序算法外,通过 sort 方法也可以实现数组的排序,因此这一篇剖析 JS 数组 sort 方法的底层实现。原创 2021-11-01 13:56:41 · 2490 阅读 · 0 评论 -
手写 JS 数组多个方法的底层实现
我们都知道,比较常用的数组方法有 `push`、`pop`、`slice`、`map `和 `reduce `等,围绕这几个常用方法,并结合 `V8 `的源代码手写这些方法的底层实现原创 2021-11-02 15:39:24 · 413 阅读 · 0 评论 -
JS 异步编程都有哪些方案
先一起来回想一下,我们在日常开发中都用过哪些 JS 异步编程的方式?总结起来无外乎有这几种:回调函数、事件监听、Promise、Generator、async/await,这几种 JS 的编程方式都是异步编程。回调函数方式是最早的 JS 异步编程的方式,后随着 ES 标准的发展,Promise、Generator 和 async/await 接连出现原创 2021-11-02 16:27:20 · 347 阅读 · 0 评论 -
如何深入理解异步编程的核心 Promise?
如何深入理解异步编程的核心 Promise? 其实在 ES6标准出现之前,社区就最早提出了 Promise的方案,后随着 ES6将其加入进去,才统一了其用法,并提供了原生的 Promise对象。Promise也是日常前端开发使用比较多的编程方式,因此需要对 Promise 异步编程的思路有更深刻的理解。 先抛出几个问题:Promise内部究竟有几种状态?Promise是怎么解决回调地狱问题的?Promise 的基本情况 如果一定要解释 Promise 到底是什么,简单来说它就是一个原创 2021-11-03 17:30:30 · 130 阅读 · 0 评论 -
如何理解 Generator、Async/await 等异步编程的语法糖
如何理解 Generator、Async/await 等异步编程的语法糖 Generator是 ES6标准中的异步编程方式,而 async/await 是 ES7标准中的。希望通过这篇文章,能对这两种编程方式有更深的理解。那么在开始前请先思考一下:Generator执行之后,最后返回的是什么?async/await的方式比 Promise和 Generator好在哪里?Generator 基本介绍 Generator(生成器)是 ES6的新关键词,学习起来比较晦涩难懂,那么什么是 Gen原创 2021-11-04 14:38:05 · 336 阅读 · 0 评论 -
怎样轻松实现一个 EventEmitter?
之所以要特地讲解这部分知识,是因为虽然严格意义上来说,events模块属于 Node.js 服务端的知识,但是由于大多数 Node.js 核心 API构建用的是异步事件驱动架构。原创 2021-11-04 17:20:39 · 517 阅读 · 0 评论 -
如何实现符合 Promise/A+ 规范的 Promise?
由于 Promise在异步编程中的重要性不言而喻,因此在很多面试中,现场实现 Promise相关方法的题目经常会出现,比如 all、race或者 any等。因此一步步实现一个符合标准的 Promise,希望在遇到相关题目时能够游刃有余。原创 2021-11-05 14:45:49 · 236 阅读 · 0 评论 -
垃圾回收:释放内存,提升浏览器页面性能
通过讲解 JS 引擎底层的垃圾回收机制,希望了解更多的浏览器内核层面的东西,从而对 JS 的内存管理以及内存溢出等形成一定的认识原创 2021-11-05 17:26:56 · 1314 阅读 · 0 评论 -
事件轮询:如何理解浏览器中的 EventLoop?
事件轮询:如何理解浏览器中的 EventLoop? 无论是浏览器端还是服务端,都在使用 Eventloop,虽然两者机制不同,但都利用了 JavaScript语言的单线程和非阻塞的特点。 先讲解浏览器端的 Eventloop的运行机制,对浏览器端有了一定的理解之后,再设计一些 Node.js的 Eventloop的底层逻辑。在开始之前先思考两个问题:浏览器端的EventLoop起到了什么作用?Node.js服务端的EventLoop的作用又表现在哪里?浏览器的 Eventloop E原创 2021-11-08 10:19:51 · 467 阅读 · 0 评论 -
引擎进阶(上):探究宏任务 & 微任务的运行机制
首先分析宏任务和微任务的运行机制,并针对日常开发中遇到的各种宏任务&微任务的方法,结合一些例子来看看代码运行的顺序逻辑,把这部分知识点重新归纳和梳理原创 2021-11-08 13:43:54 · 293 阅读 · 0 评论 -
引擎进阶(下):如何理解 Process.nextTick 的原理?
在日常开发中,Process.nextick 在浏览器端代码中很少使用,但在 Node.js 开发种却极为常见,所以要好好掌握。原创 2021-11-08 14:15:23 · 1883 阅读 · 0 评论 -
原理解析:JS 代码是如何被浏览器引擎编译、执行的?
原理解析:JS 代码是如何被浏览器引擎编译、执行的? 分析浏览器引擎对 JS代码的编译情况,并结合日常的 JavaScript开发经验,重新理解底层的编译解析机制。对其底层原理的理解,将有助于理解前端的跨端应用,以及一套代码生成多种小程序相关框架的底层逻辑.在开始前请先思考:JavaScript代码被执行分为哪几个阶段?AST到底是做什么用的?V8 引擎介绍 当前百花齐放的编程语言,主要分为编译型语言和解释型语言。编译型语言的特点是在代码运行前编译器直接将对应的代码转换成机器码,运行原创 2021-11-08 11:02:00 · 1597 阅读 · 0 评论