[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3317":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},3317,"33-js-concepts","stephentian\u002F33-js-concepts","stephentian",":scroll: 每个 JavaScript 工程师都应懂的33个概念 @leonardomso","",null,"JavaScript",15284,2310,456,6,0,4,45,false,"master",true,[],"2026-06-12 02:00:48","\u003Ch1 align=\"center\">\n\u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstephentian\u002F33-js-concepts\">\u003Cimg src=\"33_js_concepts.jpg\" alt=\"每位 JS 开发应该懂的 33 个概念\" width=200\">\u003C\u002Fa>\n  \u003Cbr>\n    \u003Cbr>\n  JavaScript开发者应懂的33个概念\n  \u003Cbr>\n\u003C\u002Fh1>\n\n## 简介\n\n这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备，但在未来学习（JavaScript）中，可以作为一篇指南。\n\n> 本篇文章是参照 @leonardomso 创立，英文版项目地址在[这里](https:\u002F\u002Fgithub.com\u002Fleonardomso\u002F33-js-concepts)。\n> 由于原版资源都要翻墙，所以本人创立一个中文版，附上关于这些概念在国内的一些文章和视频。\n> 若有觉得更好的文章或者视频，可以贡献出来，觉得有误的，请联系我删除。\n\n## 更新\n\n若有觉得更好的文章或者视频，可以贡献出来，觉得有误的，请联系我删除。\n\n- 文章的排序优化，前面的文章是介绍概念，后面的文章是深入解读。\n- 将原文的 \"高阶函数\" 和 \"map, reduce, filter\" 合并为 \"map, reduce, filter 等高阶函数\"\n- 增加 \"promise\" 概念(替换删除的 \"高阶函数\")\n- 2018-10-24 更新：@BuptStEve 贡献的三篇关于\" 函数式编程 \"方面的文章\n- 2018-12-04 更新：@haner199401 贡献的 @冴羽 \"JavaScript 深入之从原型到原型链\"\n\n---\n\n## 目录\n\n1. **[调用堆栈](#1-调用堆栈)**\n2. **[原始类型](#2-原始类型)**\n3. **[值类型和引用类型](#3-值类型和引用类型)**\n4. **[隐式, 显式, 名义和鸭子类型](#4-隐式-显式-名义和鸭子类型)**\n5. **[== 与 ===, typeof 与 instanceof](#5--vs--typeof-vs-instanceof)**\n6. **[this, call, apply 和 bind](#6-this-call-apply-和-bind)**\n7. **[函数作用域, 块级作用域和词法作用域](#7-函数作用域-块级作用域和词法作用域)**\n8. **[闭包](#8-闭包)**\n9. **[map, reduce, filter 等高阶函数](#9-map-reduce-filter-等高阶函数)**\n10. **[表达式和语句](#10-表达式和语句)**\n11. **[变量提升](#11-变量提升)**\n12. **[Promise](#12-promise)**\n13. **[立即执行函数, 模块化, 命名空间](#13-立即执行函数-模块化-命名空间)**\n14. **[递归](#14-递归)**\n15. **[算法](#15-算法)**\n16. **[数据结构](#16-数据结构)**\n17. **[消息队列和事件循环](#17-消息队列和事件循环)**\n18. **[setTimeout, setInterval 和 requestAnimationFrame](#18-settimeout-setinterval-和-requestanimationframe)**\n19. **[继承, 多态和代码复用](#19-继承-多态和代码复用)**\n20. **[按位操作符, 类数组对象和类型化数组](#20-按位操作符-类数组对象和类型化数组)**\n21. **[DOM 树和渲染过程](#21-dom-树和渲染过程)**\n22. **[new 与构造函数, instanceof 与实例](#22-new-与构造函数-instanceof-与实例)**\n23. **[原型继承与原型链](#23-原型继承与原型链)**\n24. **[Object.create 和 Object.assign](#24-objectcreate-和-objectassign)**\n25. **[工厂函数和类](#25-工厂函数和类)**\n26. **[设计模式](#26-设计模式)**\n27. **[Memoization](#27-memoization)**\n28. **[纯函数, 函数副作用和状态变化](#28-纯函数-函数副作用和状态变化)**\n29. **[耗性能操作和时间复杂度](#29-耗性能操作和时间复杂度)**\n30. **[JavaScript 引擎](#30-javascript-引擎)**\n31. **[二进制, 十进制, 十六进制, 科学记数法](#31-二进制-十六进制-十进制-科学记数法)**\n32. **[偏函数, 柯里化, Compose 和 Pipe](#32-偏函数-柯里化-compose-和-pipe)**\n33. **[代码整洁之道](#33-代码整洁之道)**\n\n---\n\n## 1. 调用堆栈\n\n### 文章\n\n- :book: [Call Stack — MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FGlossary\u002FCall_stack)\n- :book: [[译] JavaScript 如何工作：对引擎、运行时、调用堆栈的概述 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5a05b4576fb9a04519690d42)\n- :book: [[译] 理解 JavaScript 中的执行上下文和执行栈 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5ba32171f265da0ab719a6d7)\n- :book: [这一次，彻底弄懂 JavaScript 执行机制 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59e85eebf265da430d571f89)\n- :book: [解读 JavaScript 之引擎、运行时和堆栈调用 —— 开源中国](https:\u002F\u002Fwww.oschina.net\u002Ftranslate\u002Fhow-does-javascript-actually-work-part-1)\n- :book: [Tasks, microtasks, queues and schedules —— Jake Archibald](https:\u002F\u002Fjakearchibald.com\u002F2015\u002Ftasks-microtasks-queues-and-schedules\u002F)\n- :book: [Tasks, microtasks, queues and schedules（译） —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F55dbd51a60b2f3a92a8f5bff)\n\n### 视频\n\n- :tv: [What is the event loop anyway? —— 腾讯视频(英文字幕)](https:\u002F\u002Fv.qq.com\u002Fx\u002Fpage\u002Fh0372bld8re.html?ptag=qqbrowser)\n- :tv: [Understanding The JavaScript Call Stack, Event Queue, Event Table, & Event Loop —— Bilibili](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002Fav33824933\u002F)\n- :tv: [JS 中的变量提升、堆栈内存及闭包详解 —— Acfun](http:\u002F\u002Fwww.acfun.cn\u002Fv\u002Fac4495641)\n- :tv: [事件循环模型 —— PHP 中文网](http:\u002F\u002Fwww.php.cn\u002Fcode\u002F21194.html)\n- :tv: [Javascript: the Call Stack explained — Coding Blocks India](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=w6QGEiQceOM)\n- :tv: [The JS Call Stack Explained In 9 Minutes — Colt Steele](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=W8AeMrVtFLY)\n- :tv: [JavaScript Execution Stack — Codecademy](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=jT0USJeNFEA)\n- :tv: [What is the Call Stack? — Eric Traub](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=w7QWQlkLY_s)\n- :tv: [The Call Stack — Kevin Drumm](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Q2sFmqvpBe0)\n- :tv: [Understanding JavaScript Execution — Codesmith](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Z6a1cLyq7Ac&list=PLWrQZnG8l0E4kd1T_nyuVoxQUaYEWFgcD)\n- :tv: [Call Stack & Event Loop — movies com](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=mk0lu9MKBto)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 2. 原始类型\n\n### 文章\n\n- :book: [原始数据 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FGlossary\u002FPrimitive)\n- :book: [[译]JavaScript 是怎样编码数字的 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000017090272)\n- :book: [每一个 JavaScript 开发者应该了解的浮点知识 —— 颜海镜](https:\u002F\u002Fyanhaijing.com\u002Fjavascript\u002F2014\u002F03\u002F14\u002Fwhat-every-javascript-developer-should-know-about-floating-points\u002F)\n- :book: [JavaScript 标准参考教程(基本语法之数值) —— 阮一峰](https:\u002F\u002Fwangdoc.com\u002Fjavascript\u002Ftypes\u002Fnumber.html)\n- :book: [The Secret Life of JavaScript Primitives —— Angus Croll](https:\u002F\u002Fjavascriptweblog.wordpress.com\u002F2010\u002F09\u002F27\u002Fthe-secret-life-of-javascript-primitives\u002F)\n\n### 视频\n\n- :tv: [javascript 六种数据类型 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Fvideo\u002F5674)\n- :tv: [javascript 视频教程(数据类型) —— PHP 中文网](http:\u002F\u002Fwww.php.cn\u002Fcode\u002F5808.html)\n- :tv: [JavaScript Reference vs Primitive Types — Academind](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=9ooYYRLdg_g)\n- :tv: [JavaScript Primitive Types — Simon Sez IT](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=HsbWQsSCE5Y)\n- :tv: [Javascript Primitive and Reference Types — Baljeet Singh](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=F7YbhKbpFic)\n- :tv: [Value Types and Reference Types in JavaScript — Programming with Mosh](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=e-_mDyqm2oU)\n- :tv: [JavaScript Primitive Data Types — Avelx](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qw3j0A3DIzQ)\n- :tv: [Everything you never wanted to know about JavaScript numbers — Bartek Szopka](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=MqHDDtVYJRI)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 3. 值类型和引用类型\n\n### 文章\n\n- :book: [ECMAScript 引用类型 —— W3school](http:\u002F\u002Fwww.w3school.com.cn\u002Fjs\u002Fpro_js_referencetypes.asp)\n- :book: [js 中的值类型和引用类型的区别 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fleiting\u002Fp\u002F8081413.html)\n- :book: [JavaScript 的值传递和引用传递 —— FunDebug](https:\u002F\u002Fblog.fundebug.com\u002F2017\u002F08\u002F09\u002Fexplain_value_reference_in_js\u002F)\n- :book: [Primitive Types & Reference Types in JavaScript —— Bran van der Meer](https:\u002F\u002Fdocstore.mik.ua\u002Forelly\u002Fwebprog\u002Fjscript\u002Fch04_04.htm)\n- :book: [JavaScript: Passing by Value or by Reference —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fxiaojia_boke\u002Farticle\u002Fdetails\u002F54906509)\n- :book: [js 值引用和值复制 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000015411195)\n- :book: [js- 引用和复制(传值和传址) —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fzzzaquarius\u002Farticle\u002Fdetails\u002F4902235)\n\n### 视频\n\n- :tv: [Javascript Pass by Value vs Pass by Reference — techsith](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=E-dAnFdq8k8)\n- :tv: [JavaScript Value vs Reference Types — Programming with Mosh](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=fD0t_DKREbE)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 4. 隐式, 显式, 名义和鸭子类型\n\n### 文章\n\n- :book: [ECMAScript 类型转换 —— W3school](http:\u002F\u002Fwww.w3school.com.cn\u002Fjs\u002Fpro_js_typeconversion.asp)\n- :book: [JavaScript 的怪癖 1：隐式类型转换 —— justjavac](http:\u002F\u002Fjustjavac.com\u002Fjavascript\u002F2013\u002F04\u002F08\u002Fjavascript-quirk-1-implicit-conversion-of-values.html)\n- :book: [JavaScript 运算符规则与隐式类型转换详解 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59ad2585f265da246a20e026)\n- :book: [聊一聊 JS 中的隐式类型转换 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000004482388)\n- :book: [有趣的 JavaScript 隐式类型转换 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fyugege\u002Fp\u002F5277883.html)\n- :book: [JavaScript 显式类型转换与隐式类型转换 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fyangjvn\u002Farticle\u002Fdetails\u002F48284163)\n- :book: [你不知道的 JavaScript（中卷）强制类型转换 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F777a89b4ed9a)\n- :book: [你懂 JavaScript 嗎？#8 強制轉型 —— cythilya](https:\u002F\u002Fithelp.ithome.com.tw\u002Farticles\u002F10201512)\n- :book: [动态类型语言和鸭子类型 —— 曾探](http:\u002F\u002Fbook.51cto.com\u002Fart\u002F201505\u002F475153.htm)\n- :book: [Nominal & Structural Typing —— flow](https:\u002F\u002Fflow.org\u002Fen\u002Fdocs\u002Flang\u002Fnominal-structural\u002F)\n- :book: [What exactly is Type Coercion in Javascript? —— stackoverflow](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F19915688\u002Fwhat-exactly-is-type-coercion-in-javascript)\n- :book: [You Don't Know JS: Types & Grammar —— github](https:\u002F\u002Fgithub.com\u002Fgetify\u002FYou-Dont-Know-JS\u002Fblob\u002Fmaster\u002Ftypes%20&%20grammar\u002Fch4.md)\n\n### 视频\n\n- :tv: [javascript 隐式转换 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Fvideo\u002F5675)\n- :tv: [Javascript 基础加强-类型转换 —— 黑马程序员](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F27767009.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n\u003Cdiv id=\"5--vs--typeof-vs-instanceof\">\u003C\u002Fdiv>\n\n## 5. == vs ===, typeof vs instanceof\n\n### 文章\n\n- :book: [JavaScript 中的相等性判断 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FEquality_comparisons_and_sameness)\n- :book: [js 中 == 和 === 的区别 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F584918612f301e005716add6)\n- :book: [== vs === in Javascript —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fw97531\u002Farticle\u002Fdetails\u002F82255225)\n- :book: [深入理解 javascript 之 typeof 和 instanceof —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fmevicky\u002Farticle\u002Fdetails\u002F50353881)\n- :book: [JavaScript 的 typeof 的用途 —— justjavac](http:\u002F\u002Fjustjavac.com\u002Fjavascript\u002F2012\u002F12\u002F23\u002Fwhat-is-javascripts-typeof-operator-used-for.html)\n- :book: [一张图看懂 Function 和 Object 的关系及简述 instanceof 运算符 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F58358606570c35005e4142bd)\n- :book: [浅谈 instanceof 和 typeof 的实现原理 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5b0b9b9051882515773ae714)\n- :book: [typeof 和 instanceOf 的区别](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000000730982)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 6. this, call, apply 和 bind\n\n### 文章\n\n- :book: [Javascript 的 this 用法 —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2010\u002F04\u002Fusing_this_keyword_in_javascript.html)\n- :book: [学会 JS 的 this 这一篇就够了，根本不用记 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Farticle\u002F1758)\n- :book: [[译] this（他喵的）到底是什么 — 理解 JavaScript 中的 this、call、apply 和 bind —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5b9f176b6fb9a05d3827d03f)\n- :book: [this、apply、call、bind —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59bfe84351882531b730bac2)\n- :book: [使用 call、apply 和 bind 解决 js 中烦人的 this，事件绑定时的 this 和传参问题 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Ftingyu-blog\u002Fp\u002F6212392.html)\n- :book: [call、apply 和 bind 的原生实现 —— github](https:\u002F\u002Fgithub.com\u002FAbiel1024\u002Fblog\u002Fissues\u002F16)\n\n### 视频\n\n- :tv: [JavaScript 关于 this 关键字解释 —— 爱奇艺](https:\u002F\u002Fwww.iqiyi.com\u002Fw_19rr1augsd.html)\n- :tv: [JS 关于作用域闭包和 this 的综合面试题 —— 百度视频](http:\u002F\u002Fbaidu.iqiyi.com\u002Fwatch\u002F845335533383874688.html?page=videoMultiNeed)\n- :tv: [js 面向对象闭包数组 12.函数中的 this —— 乐视视频](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F27478413.html?ch=baidu_s)\n- :tv: [1.3.10-this 指向及 this 应用 —— 乐视视频](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F24835911.html?ch=baidu_s)\n- :tv: [珠峰培训 JavaScript 开发课程：关于 this 关键字、闭包作用域 —— 网易云课堂](https:\u002F\u002Fstudy.163.com\u002Fcourse\u002Fintroduction\u002F590005.htm)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 7. 函数作用域, 块级作用域和词法作用域\n\n### 文章\n\n- :book: [变量作用域与解构赋值 —— 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001434446689867b27157e896e74d51a89c25cc8b43bdb3000\u002F0014344993159773a464f34e1724700a6d5dd9e235ceb7c000)\n- :book: [学习 Javascript 闭包（Closure） —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2009\u002F08\u002Flearning_javascript_closures.html)\n- :book: [JavaScript 中词法作用域、闭包与跳出闭包 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000006671020)\n- :book: [JavaScript 深入之词法作用域和动态作用域 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F58e70077b123db15eb88dc7e)\n- :book: [深入理解闭包之前置知识 → 作用域与词法作用域 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5afb0ae56fb9a07aa2138425)\n- :book: [What is lexical scope? —— stackoverflow](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F1047454\u002Fwhat-is-lexical-scope)\n- :book: [You Don't Know JS: Scope & Closures —— Kyle Simpson](https:\u002F\u002Fgithub.com\u002Ffishenal\u002FYou-Dont-Know-JS\u002Fblob\u002Fmaster\u002Fscope%20&%20closures\u002Fch2.md)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 8. 闭包\n\n### 文章\n\n- :book: [闭包 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FClosures)\n- :book: [ECMAScript 闭包（closure）—— w3school](http:\u002F\u002Fwww.w3school.com.cn\u002Fjs\u002Fpro_js_functions_closures.asp)\n- :book: [学习 Javascript 闭包（Closure） —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2009\u002F08\u002Flearning_javascript_closures.html)\n- :book: [闭包 —— 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001434446689867b27157e896e74d51a89c25cc8b43bdb3000\u002F00143449934543461c9d5dfeeb848f5b72bd012e1113d15000)\n- :book: [一次性搞懂 JavaScript 闭包 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F796e903754f1)\n- :book: [JavaScript 闭包 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000006875662)\n- :book: [js 匿名自执行函数中闭包的高级使用 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F5800eb7da22b9d005b36156e)\n- :book: [高效使用 JavaScript 闭包 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F59df405251882551bf7e58c6)\n- :book: [深入理解 JavaScript 原型与闭包 —— 王福朋](https:\u002F\u002Fwww.cnblogs.com\u002Fwangfupeng1988\u002Fp\u002F3977924.html)\n\n### 视频\n\n- :tv: [JavaScript 闭包和闭包面试题 —— 爱奇艺](http:\u002F\u002Fwww.iqiyi.com\u002Fw_19rr1amael.html)\n- :tv: [js 面向对象闭包数组 11.闭包 —— 乐视](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F27478410.html)\n- :tv: [白贺翔\\_函数(闭包) —— 乐视](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F30505852.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 9. map, reduce, filter 等高阶函数\n\n### 文章\n\n- :book: [高阶函数 —— 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001434446689867b27157e896e74d51a89c25cc8b43bdb3000\u002F001434499355829ead974e550644e2ebd9fd8bb1b0dd721000)\n- :book: [ES5 中新增的 Array 方法详细说明 —— 张鑫旭](https:\u002F\u002Fwww.zhangxinxu.com\u002Fwordpress\u002F2013\u002F04\u002Fes5%e6%96%b0%e5%a2%9e%e6%95%b0%e7%bb%84%e6%96%b9%e6%b3%95\u002F)\n- :book: [一张图看懂 JavaScript 中数组的迭代方法：forEach、map、filter、reduce、every、some —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5835808067f3560065ed4ab2)\n- :book: [Transducing（上）－《JavaScript 轻量级函数式编程》 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000012127329)\n- :book: [JavaScript 函数式编程（三） —— @BuptStEve](https:\u002F\u002Fgithub.com\u002FBuptStEve\u002Fblog\u002Fissues\u002F15)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 10. 表达式和语句\n\n### 文章\n\n- :book: [js 表达式与语句 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fxianshenglu\u002Fp\u002F8386918.html)\n- :book: [JS 表达式和语句的区别 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fq\u002F1010000004102804)\n- :book: [JavaScript 中的表达式（expression）和语句\u002F声明（statement） —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fmett_smith\u002Farticle\u002Fdetails\u002F78761247)\n- :book: [重讀 Axel 的 Javascript 中的 Expression vs Statement 一文 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000004565693)\n- :book: [Expressions versus statements in JavaScript —— Dr. Axel](http:\u002F\u002F2ality.com\u002F2012\u002F09\u002Fexpressions-vs-statements.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 11. 变量提升\n\n### 文章\n\n- :book: [JavaScript 变量提升 —— 菜鸟教程](http:\u002F\u002Fwww.runoob.com\u002Fjs\u002Fjs-hoisting.html)\n- :book: [ES6 变量作用域与提升：变量的生命周期详解 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59905bea6fb9a03c34192c51)\n- :book: [[翻译] JavaScript Scoping and Hoisting —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000004345355#articleHeader5)\n- :book: [JavaScript Scoping and Hoisting —— Ben Cherry](http:\u002F\u002Fwww.adequatelygood.com\u002FJavaScript-Scoping-and-Hoisting.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 12. Promise\n\n### 文章\n\n- :book: [使用 promises —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FGuide\u002FUsing_promises)\n- :book: [Promise —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FPromise)\n- :book: [Promise — 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001434446689867b27157e896e74d51a89c25cc8b43bdb3000\u002F0014345008539155e93fc16046d4bb7854943814c4f9dc2000)\n- :book: [JavaScript Promise：去而复返 —— 司徒正美](https:\u002F\u002Fwww.cnblogs.com\u002Frubylouvre\u002Fp\u002F3495286.html)\n- :book: [(上面的原文)JavaScript Promise：简介 —— Web Fundamentals](https:\u002F\u002Fdevelopers.google.com\u002Fweb\u002Ffundamentals\u002Fprimers\u002Fpromises#_1)\n- :book: [1 分钟读完《10 分钟学会 JavaScript 的 Async\u002FAwait》 —— justjavac](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000011813934)\n- :book: [JavaScript Promise 迷你书（中文版）](https:\u002F\u002Fjuejin.im\u002Fentry\u002F56499ae160b2d1404c4f8834)\n- :book: [JavaScript 进阶之路——认识和使用 Promise，重构你的 Js 代码 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fyunfeifei\u002Fp\u002F4453690.html)\n\n### 视频\n\n- :tv: [Promise 入门 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Flearn\u002F949)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 13. 立即执行函数, 模块化, 命名空间\n\n### 文章\n\n- :book: [Javascript 模块化编程（一）：模块的写法 —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2012\u002F10\u002Fjavascript_module.html)\n- :book: [javascript 模块化编程-详解立即执行函数表达式 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F4dbf4a4c8ebb)\n- :book: [Javascript 的匿名函数与自执行 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F57fee360a22b9d005b1d9ae3)\n- :book: [前端模块化——技术选型 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000006966358)\n- :book: [谈谈 Js 前端模块化规范 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000015991869#articleHeader8)\n- :book: [函数声明与函数表达式的区别 —— 伯乐在线](http:\u002F\u002Fweb.jobbole.com\u002F87534\u002F)\n\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 14. 递归\n\n### 文章\n\n- :book: [求解释 js 递归 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fq\u002F1010000003942347)\n- :book: [JavaScript 中的递归 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5948c0d8fe88c2006a939e2a)\n- :book: [递归（上）－《JavaScript 轻量级函数式编程》 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59c1d91d6fb9a00a53275f79)\n- :book: [递归（下）－《JavaScript 轻量级函数式编程》 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59c87fb46fb9a00a437b1a2e)\n- :book: [尾调用和尾递归 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5acdd7486fb9a028ca53547c)\n- :book: [几个经典递归问题用 js 实现 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fqianqianstd\u002Farticle\u002Fdetails\u002F75807462)\n- :book: [递归函数的几个例子 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fx_i_xw\u002Farticle\u002Fdetails\u002F72026868)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 15. 算法\n\n### 文章\n\n- :book: [十大经典排序算法总结（JavaScript 描述） —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F57dcd394a22b9d00610c5ec8)\n- :book: [在 JavaScript 中学习数据结构与算法 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F594dfe795188250d725a220a#comment)\n- :book: [JS 中可能用得到的全部的排序算法 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F58c9d5fb1b69e6006b686bce)\n- :book: [JS 家的排序算法 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F1b4068ccd505)\n- :book: [前端常见算法的 JS 实现 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000008593715)\n- :book: [前端面试中的常见的算法问题 ——蒲小花的博客](https:\u002F\u002Fwww.jackpu.com\u002Fqian-duan-mian-shi-zhong-de-chang-jian-de-suan-fa-wen-ti\u002F)\n\n### 视频\n\n- :tv: [Javascript 实现二叉树算法 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Flearn\u002F888)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 16. 数据结构\n\n### 文章\n\n- :book: [来我们浅谈一下 js 的数据结构 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F5e0e8d183102)\n- :book: [JavaScript 中的算法与数据结构 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fnb\u002F16835496)\n- :book: [学 JS 必看-JavaScript 数据结构深度剖析 —— 大道至简的博客](http:\u002F\u002Fblog.sina.com.cn\u002Fs\u002Fblog_7b9c5e4101017mjt.html)\n- :book: [js 中基础数据结构数组去重问题 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F586effe0da2f600053d85a9a)\n\n### 视频\n\n- :tv: :tv: [JavaScript 数据结构-运算符 —— 乐视](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F27606964.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 17. 消息队列和事件循环\n\n### 文章\n\n- :book: [并发模型与事件循环 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FEventLoop)\n- :book: [JavaScript 运行机制详解：再谈 Event Loop —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2014\u002F10\u002Fevent-loop.html)\n- :book: [深入理解 JavaScript 事件循环 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fdong-xu\u002Fp\u002F7000163.html)\n- :book: [深入浅出 Javascript 事件循环机制 —— 知乎](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F26229293)\n- :book: [JS 事件循环机制（event loop）之宏任务、微任务 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000014940904#articleHeader7)\n- :book: [JavaScript：彻底理解同步、异步和事件循环 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000004322358)\n- :book: [从浏览器多进程到 JS 单线程，JS 运行机制最全面的一次梳理 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5a6547d0f265da3e283a1df7)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 18. setTimeout, setInterval 和 requestAnimationFrame\n\n### 文章\n\n- :book: [Window setTimeout() 方法 —— 菜鸟教程](http:\u002F\u002Fwww.runoob.com\u002Fjsref\u002Fmet-win-settimeout.html)\n- :book: [Window setInterval() 方法 —— 菜鸟教程](http:\u002F\u002Fwww.runoob.com\u002Fjsref\u002Fmet-win-setinterval.html)\n- :book: [关于 setTimeout —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5aa4c47af265da239866e236)\n- :book: [你不知道的 Javascript：有趣的 setTimeout —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5a77f8ce5188257a6d635d76)\n- :book: [原来你是这样的 setTimeout —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F5861ebf01b69e6006ce61d38)\n- :book: [setTimeout() 和 setInterval() 本质区别在哪里？ —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fq\u002F1010000005989491)\n- book: [window.requestAnimationFrame —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FAPI\u002FWindow\u002FrequestAnimationFrame)\n- :book: [requestAnimationFrame 知多少？ —— 博客园](http:\u002F\u002Fwww.cnblogs.com\u002Fonepixel\u002Fp\u002F7078617.html)\n- :book: [CSS3 动画那么强，requestAnimationFrame 还有毛线用？ —— 张鑫旭](https:\u002F\u002Fwww.zhangxinxu.com\u002Fwordpress\u002F2013\u002F09\u002Fcss3-animation-requestanimationframe-tween-%e5%8a%a8%e7%94%bb%e7%ae%97%e6%b3%95\u002F)\n- :book: [「JavaScript 定时器」setInterval、setTimeout 和 requestAnimationFrame 浅析 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000014661035)\n- :book: [翻译：setInterval 与 requestAnimationFrame 的时间间隔测试 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000000386368)\n- :book: [阿里前端面试题：requestAnimationFrame 实现类似 setInterval 的计时器 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fq\u002F1010000013909430)\n\n### 视频\n\n- :tv: [setTimeout 和 setInterval —— 优酷](http:\u002F\u002Fv.youku.com\u002Fv_show\u002Fid_XNTA4OTQ0NzA0.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 19. 继承, 多态和代码复用\n\n### 文章\n\n- :book: [JS 面向对象编程之：封装、继承、多态 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002FLeo_wl\u002Fp\u002F5734794.html)\n- :book: [Javascript 的继承与多态 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F5cb692658704)\n- :book: [js:面向对象编程，带你认识封装、继承和多态 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59396c96fe88c2006afc2707)\n- :book: [JavaScript 中的“多继承” —— 掘金](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F34693209)\n- :book: [代码复用模式 —— github](https:\u002F\u002Fgithub.com\u002FTooBug\u002Fjavascript.patterns\u002Fblob\u002Fmaster\u002Fchapter6.markdown)\n- :book: [深入理解 JavaScript：代码复用模式(推荐篇) —— 汤姆大叔](http:\u002F\u002Fwww.cnblogs.com\u002FTomXu\u002Farchive\u002F2012\u002F04\u002F24\u002F2438050.html)\n- :book: [深入理解 JavaScript：代码复用模式(避免篇) —— 汤姆大叔](https:\u002F\u002Fwww.cnblogs.com\u002FTomXu\u002Farchive\u002F2012\u002F04\u002F23\u002F2438005.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 20. 按位操作符, 类数组对象和类型化数组\n\n### 文章\n\n- :book: [按位操作符 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FOperators\u002FBitwise_Operators)\n- :book: [类数组对象 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FTyped_arrays)\n- :book: [类型化数组 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FArrayBuffer)\n- :book: [JavaScript ArrayBuffer 浅析 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fgradolabs\u002Fp\u002F4762134.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 21. DOM 树和渲染过程\n\n### 文章\n\n- :book: [如何创建一个 DOM 树 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FAPI\u002FDocument_Object_Model\u002FHow_to_create_a_DOM_tree)\n- :book: [HTML DOM 节点 —— W3school](http:\u002F\u002Fwww.w3school.com.cn\u002Fhtmldom\u002Fdom_nodes.asp)\n- :book: [DOM 概述 —— 阮一峰](http:\u002F\u002Fjavascript.ruanyifeng.com\u002Fdom\u002Fnode.html)\n- :book: [《JavaScript 闯关记》之 DOM（上）—— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F10031bb24daf)\n- :book: [《JavaScript 闯关记》之 DOM（下）—— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F789b16dce14a)\n- :book: [掌握 DOM 操作 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F58314efd8ac2470061bb30fd)\n- :book: [操作 DOM —— 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001434446689867b27157e896e74d51a89c25cc8b43bdb3000\u002F001434500494451273e6b3dec9d411d9ba841dee8caec45000)\n- :book: [原来 CSS 与 JS 是这样阻塞 DOM 解析和渲染的 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59c60691518825396f4f71a1)\n\n### 视频\n\n- :tv: [DOM 探索之基础详解篇 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Flearn\u002F488)\n- :tv: [DOM 事件探秘 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Flearn\u002F138)\n- :tv: [jQuery 基础(二)DOM 篇 —— 慕课网](https:\u002F\u002Fwww.imooc.com\u002Flearn\u002F530)\n- :tv: [JS 操作 DOM 对象属性和方法 —— 爱奇艺](http:\u002F\u002Fwww.iqiyi.com\u002Fw_19rr19s08l.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 22. new 与构造函数, instanceof 与实例\n\n### 文章\n\n- :book: [构造函数与 new 命令 —— 阮一峰](http:\u002F\u002Fjavascript.ruanyifeng.com\u002Foop\u002Fbasic.html)\n- :book: [Javascript 面向对象编程（二）：构造函数的继承 —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2010\u002F05\u002Fobject-oriented_javascript_inheritance.html)\n- :book: [完整原型链详细图解(构造函数、原型、实例化对象) —— CSDN](https:\u002F\u002Fblog.csdn.net\u002FSpicyBoiledFish\u002Farticle\u002Fdetails\u002F71123162)\n- :book: [JavaScript 中构造函数与 new 操作符的实例详解 —— PHP 中文网](http:\u002F\u002Fwww.php.cn\u002Fjs-tutorial-376246.html)\n- :book: [构造函数、实例、原型、原型链之间的关系 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fyin_991\u002Farticle\u002Fdetails\u002F80954453)\n- :book: [深入理解 JS—instanceof 和原型链 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fcecilia620\u002Farticle\u002Fdetails\u002F71158048)\n- :book: [前端基础进阶（九）：详解面向对象、构造函数、原型与原型链 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F15ac7393bc1f)\n- :book: [js 用 new 实例化对象与直接调用的 this 的区别 —— 简书](https:\u002F\u002Fwww.jianshu.com\u002Fp\u002F60ffc4831bff)\n- :book: [JavaScript 并非所有的东西都是对象 —— justjavac](http:\u002F\u002Fjustjavac.com\u002Fjavascript\u002F2012\u002F12\u002F22\u002Fjavascript-values-not-everything-is-an-object.html)\n- :book: [JavaScript instanceof 运算符深入剖析 —— IBM](https:\u002F\u002Fwww.ibm.com\u002Fdeveloperworks\u002Fcn\u002Fweb\u002F1306_jiangjj_jsinstanceof\u002F)\n\n### 视频\n\n- :tv: [改良版的构造函数 —— 乐视](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F27766889.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 23. 原型继承与原型链\n\n### 文章\n\n- :book: [继承与原型链 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FInheritance_and_the_prototype_chain)\n- :book: [构造函数、原型与原型链 —— github](https:\u002F\u002Fgithub.com\u002Fbigdots\u002Fblog\u002Fissues\u002F1)\n- :book: [原型及原型链 —— github(1269 Star)](https:\u002F\u002Fgithub.com\u002Fstone0090\u002Fjavascript-lessons\u002Ftree\u002Fmaster\u002F2.5-Prototype)\n- :book: [理清 javascript 中的面向对象(一) 原型继承 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000004282206)\n- :book: [JavaScript：继承和原型链(译) —— justjavac](http:\u002F\u002Fjustjavac.com\u002F2015\u002F12\u002F09\u002Finheritance-and-the-prototype-chain.html)\n- :book: [三张图搞懂 JavaScript 的原型对象与原型链 —— 博客园](http:\u002F\u002Fwww.cnblogs.com\u002Fshuiyi\u002Fp\u002F5305435.html)\n- :book: [一张图让你搞懂 JavaScript 的继承与原型链 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fthe__apollo\u002Farticle\u002Fdetails\u002F76774698)\n- :book: [JS 高级--原型链(一看就懂，但 18 岁以下请绕道) —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fxiaotao_css\u002Farticle\u002Fdetails\u002F72782416)\n- :book: [原型继承 —— 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001434446689867b27157e896e74d51a89c25cc8b43bdb3000\u002F0014344997013405abfb7f0e1904a04ba6898a384b1e925000)\n- :book: [JS 原型链与继承别再被问倒了 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F58f94c9bb123db411953691b)\n- :book: [征服 JavaScript 面试系列：类继承和原型继承的区别 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F5885db221b69e600592253e7)\n- :book: [JavaScript 深入之从原型到原型链 —— 冴羽](https:\u002F\u002Fgithub.com\u002Fmqyqingfeng\u002FBlog\u002Fissues\u002F2)\n- :book: [深入理解 JavaScript 原型与闭包 —— 王福朋](https:\u002F\u002Fwww.cnblogs.com\u002Fwangfupeng1988\u002Fp\u002F3977924.html)\n\n### 视频\n\n- :tv: [JS 高级-07-原型链继承 —— 乐视](http:\u002F\u002Fwww.le.com\u002Fptv\u002Fvplay\u002F27552753.html)\n- :tv: [JS 原型对象和原型链简介 —— 腾讯视频](https:\u002F\u002Fv.qq.com\u002Fx\u002Fpage\u002Fb0511nwa7d3.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 24. Object.create 和 Object.assign\n\n### 文章\n\n- :book: [Object.create —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FObject\u002Fcreate)\n- :book: [Object.assign —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FObject\u002Fassign)\n- :book: [Object.create vs Object.assign —— 慕课网手记](https:\u002F\u002Fwww.imooc.com\u002Farticle\u002F17591)\n- :book: [JS 中的 Object.assign()、Object.create()、Object.defineProperty() —— CSDN](https:\u002F\u002Fblog.csdn.net\u002FDeepLies\u002Farticle\u002Fdetails\u002F52915143)\n- :book: [Object-Assign-Deep —— github](https:\u002F\u002Fgithub.com\u002Fsaikojosh\u002FObject-Assign-Deep)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 25. 工厂函数和类\n\n### 文章\n\n- :book: [类 —— MDN](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FClasses)\n- :book: [类和实例 —— 廖雪峰](https:\u002F\u002Fwww.liaoxuefeng.com\u002Fwiki\u002F001374738125095c955c1e6d8bb493182103fac9270762a000\u002F00138682004077376d2d7f8cc8a4e2c9982f92788588322000)\n- :book: [Javascript 定义类（class）的三种方法 —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2012\u002F07\u002Fthree_ways_to_define_a_javascript_class.html)\n- :book: [【译】ES6 的工厂函数 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59c8c8756fb9a00a681ae5bd)\n- :book: [JavaScript 创建对象之单例、工厂、构造函数模式 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F587992c961ff4b0065edf1ff)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 26. 设计模式\n\n### 文章\n\n- :book: [JavaScript 设计模式 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59df4f74f265da430f311909)\n- :book: [学用 JavaScript 设计模式 —— 极客学院](http:\u002F\u002Fwiki.jikexueyuan.com\u002Fproject\u002Fjavascript-design-patterns\u002F)\n- :book: [[面试专题]JS 设计模式 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000010914032)\n- :book: [JavaScript Patterns 中译本 —— github](https:\u002F\u002Fgithub.com\u002Flxj\u002Fjavascript.patterns)\n\n### 视频\n\n- :tv: [HTML5 课程大纲 2-11JS 设计模式](https:\u002F\u002Ftv.sohu.com\u002Fv\u002FdXMvMjQwNzYwNzQ4Lzg5NzM2MDA3LnNodG1s.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 27. Memoization\n\n### 文章\n\n- :book: [JavaScript Memoization —— 司徒正美](https:\u002F\u002Fwww.cnblogs.com\u002Frubylouvre\u002Farchive\u002F2009\u002F08\u002F06\u002F1540678.html)\n- :book: [memoization 提升递归效率 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002Fyingshuizy\u002Fp\u002F4517102.html)\n- :book: [如何提升 JavaScript 的递归效率 —— 51CTO](http:\u002F\u002Fdeveloper.51cto.com\u002Fart\u002F201010\u002F231513.htm)\n- :book: [JavaScript 高级技巧 Memoization —— SegmentFaut](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000016703106)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 28. 纯函数, 函数副作用和状态变化\n\n### 文章\n\n- :book: [纯函数(Pure Function) —— React.js 小书](http:\u002F\u002Fhuziketang.mangojuice.top\u002Fbooks\u002Freact\u002Flesson32)\n- :book: [JavaScript Functional Programming：纯函数 —— 宁皓网](https:\u002F\u002Fninghao.net\u002Fblog\u002F4634)\n- :book: [js 函数的副作用分析 —— 脚本之家](https:\u002F\u002Fwww.jb51.net\u002Farticle\u002F28079.htm)\n- :book: [如何使用纯函数式 JavaScript 处理脏副作用 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5b82bdb351882542e241ed32?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com)\n- :book: [原生 JavaScript 实现 state 状态管理系统 —— 博客园](http:\u002F\u002Fwww.cnblogs.com\u002Fzhangycun\u002Fp\u002F9403335.html)\n- :book: [JavaScript 函数式编程 —— @BuptStEve](https:\u002F\u002Fgithub.com\u002FBuptStEve\u002Fblog\u002Fissues\u002F10)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 29. 耗性能操作和时间复杂度\n\n### 文章\n\n- :book: [时间复杂度 O(log n) 意味着什么？ —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F593f56528d6d810058a355f4)\n- :book: [算法的时间复杂度和空间复杂度 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fentry\u002F5a49f7d36fb9a0450a67b269)\n- :book: [算法（一）时间复杂度 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F58d15f1044d90400691834d4)\n- :book: [Big O Search Algorithms in JavaScript —— Bradley Braithwaite](http:\u002F\u002Fwww.bradoncode.com\u002Fblog\u002F2012\u002F04\u002Fbig-o-algorithm-examples-in-javascript.html)\n- :book: [Time Complexity Analysis in JavaScript — Jennifer Bland](https:\u002F\u002Fwww.jenniferbland.com\u002Ftime-complexity-analysis-in-javascript\u002F)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 30. JavaScript 引擎\n\n### 文章\n\n- :book: [javascript 引擎 —— 百度百科](https:\u002F\u002Fbaike.baidu.com\u002Fitem\u002Fjavascript引擎\u002F5356108)\n- :book: [V8(JavaScript 引擎) —— 百度百科](https:\u002F\u002Fbaike.baidu.com\u002Fitem\u002FV8\u002F6178125)\n- :book: [图解搞懂 JavaScript 引擎 Event Loop —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5a6309f76fb9a01cab2858b1)3\n- :book: [V8 JavaScript 引擎：高性能的 ES2015+ —— justjavac](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000010819020)\n- :book: [10 分钟理解 JS 引擎的执行机制 —— SegmentFaut](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000012806637)\n- :book: [V8 javascript 引擎 —— 博客园](https:\u002F\u002Fwww.cnblogs.com\u002FweirdoQi\u002Fp\u002F6609811.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 31. 二进制, 十六进制, 十进制, 科学记数法\n\n### 文章\n\n- :book: [二、八、十、十六进制转换(图解篇) —— 博客园](http:\u002F\u002Fwww.cnblogs.com\u002Fgaizai\u002Fp\u002F4233780.html)\n- :book: [JavaScript 读写二进制数据 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5b93dadaf265da0a857a58a3)\n\n### 视频\n\n- :tv: [二进制、十进制、十六进制互相转化很难吗？ —— 百度视频](http:\u002F\u002Fbaishi.baidu.com\u002Fwatch\u002F7873060963471478456.html)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 32. 偏函数, 柯里化, Compose 和 Pipe\n\n### 文章\n\n- :book: [Javascript 函数式编程之偏函数 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fqq_42129063\u002Farticle\u002Fdetails\u002F81874314)\n- :book: [JavaScript 专题之偏函数 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000010686144)\n- :book: [柯里化和偏函数有什么区别？ —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fq\u002F1010000008626058)\n- :book: [Javascript 偏函数与柯里化 —— CSDN](https:\u002F\u002Fblog.csdn.net\u002Fneweastsun\u002Farticle\u002Fdetails\u002F75947785)\n- :book: [柯里化(curry) —— JS 函数式编程指南](https:\u002F\u002Fllh911001.gitbooks.io\u002Fmostly-adequate-guide-chinese\u002Fcontent\u002Fch4.html)\n- :book: [代码组合(compose) —— JS 函数式编程指南](https:\u002F\u002Fllh911001.gitbooks.io\u002Fmostly-adequate-guide-chinese\u002Fcontent\u002Fch5.html)\n- :book: [关于 javascript 函数式编程中 compose 的实现 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000008394749)\n- :book: [实现 compose 的五种思路 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000011447164)\n- :book: [JavaScript 函数式编程之函数组合函数 compose 和 pipe 的实现 —— SegmentFault](https:\u002F\u002Fsegmentfault.com\u002Fa\u002F1190000015102804)\n- :book: [JavaScript 轻量级函数式编程-第 4 章:组合函数 ——掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F59a62f3d6fb9a0248363fd9d#comment)\n- :book: [JavaScript 函数式编程（二） —— @BuptStEve](https:\u002F\u002Fgithub.com\u002FBuptStEve\u002Fblog\u002Fissues\u002F11)\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n\n## 33. 代码整洁之道\n\n### 文章\n\n- :book: [[译] JavaScript 代码整洁之道 —— 边城](https:\u002F\u002Fwww.zcfy.cc\u002Farticle\u002Fclean-code-javascript-readme-md-at-master-ryanmcdermott-clean-code-javascript-github-2273.html)\n- :book: [Javascript 编程风格 —— 阮一峰](http:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2012\u002F04\u002Fjavascript_programming_style.html)\n- :book: [重构 - 代码整洁之道 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5a5b2a5c6fb9a01cbc6e59f9)\n- :book: [让你的代码更简短，更整洁，更易读的 ES6 小技巧 —— 掘金](https:\u002F\u002Fjuejin.im\u002Fpost\u002F5a7d71836fb9a063435ecf51)\n- :book: [Web 前端：11 个让你代码整洁的原则 —— 伯乐在线](http:\u002F\u002Fblog.jobbole.com\u002F23617\u002F)\n- :book: [Clean Code concepts adapted for JavaScript —— ryanmcdermott](https:\u002F\u002Fgithub.com\u002Fryanmcdermott\u002Fclean-code-javascript)\n\n\u003Cbr>\n\n**[:arrow_up: 返回目录](#目录)**\n\n---\n","这个项目旨在帮助开发者掌握33个关键的JavaScript概念。它涵盖了从基础到高级的各种主题，包括调用堆栈、原型链、闭包、高阶函数等，并提供了丰富的中文文章和视频资源来辅助学习。适合所有希望深入理解JavaScript语言特性和编程技巧的前端工程师或任何对JavaScript感兴趣的人士使用，无论是初学者还是有一定经验的开发者都能从中受益。",2,"2026-06-11 02:53:31","top_language"]