作者:Ahmad Shadeed
译者:前端小智
起源:dev

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

首先,问大家一个问题,你对 JS 的熟练程度有多深?

明天,咱们来介绍一下 JS 中的33个概念,这些概念中,你可能晓得,也有可能不晓得,甚至连听都没听过。

这些概念是作为前端都应该须要晓得的,那咱们开始吧。

1. 调用堆栈

调用堆栈是一种机制,用于解释器(如网络浏览器中的JavaScript解释器)跟踪其在调用多个函数的脚本中的地位--以后正在运行什么函数,以及从该函数中调用什么函数,等等。

2. 原始类型

除了对象之外,所有的类型都定义了不可变的值(也就是说,不能扭转的值)。例如(与C语言不同),字符串是不可变的。咱们把这些类型的值称为 "原始值"。

3. 值类型和援用类型

被调配了一个非原始值的变量被赋予了一个对该值的援用。该援用指向该对象在内存中的地位。变量实际上并不蕴含该值。

4. Implicit, Explicit, Nominal, Structuring and Duck Typing

类型强制是指当运算符的操作数为不同类型时,其中一个操作数将被转换为另一个操作数类型的 "等价 "值。

参考:https://stackoverflow.com/que...

5. == vs === vs typeof

JavaScript有两种视觉上类似但又十分不同的办法来测试相等性。你能够用 ==== 来测试相等性。

6. 函数作用域,块作用域和词法作用域

1: 函数作用域
2:块作用域
3:记法作用域

7. 表达式与申明式

进行这种辨别很重要,因为表达式能够像申明式一样口头,这就是为什么咱们也有表达式语句。然而,另一方面,申明式不能像表达式那样口头。

8. IIFE,模块和命名空间

参考:https://vvkchandra.medium.com...

9. 音讯队列和事件循环

"JavaScript是如何做到异步和单线程的?" 简短的答复是,JavaScript语言是单线程的,异步行为不是JavaScript语言自身的一部分,而是建设在浏览器(或编程环境)中的外围JavaScript语言之上,并通过浏览器的API拜访。

参考:https://medium.com/front-end-...

10. setTimeout, setInterval 和 requestAnimationFrame

咱们心愿不要黎曼执行一个函数,而是在当前的某个工夫执行。这就是所谓的 "调度调用"。

参考:https://javascript.info/setti...

11. JavaScript引擎

为Web编写代码有时感觉有点神奇,因为开发人员编写了一系列字符,这些字符在浏览器中变成了具体的图像、文字和动作。了解这项技术能够帮忙开发人员更好地调整他们作为程序员的技能。

参考:http://www.softwaremag.com/ja...

12. 按位运算符,类型数组和数组缓冲区

从技术上来说,对于计算机来说,所有货色都是1和0。它不应用数字、字符或字符串,它只应用二进制数字(位)。简略解释主浊,所有货色都以二进制模式存储。而后计算机应用诸如UTF-8之类的编码将保留的位组合映射到字符、数字或不同的符号(ELI5版本)。

参考:https://hackernoon.com/progra...

13. DOM和布局树

文档对象模型(Document Object Model),通常被称为DOM,是使网站具备交互性的重要组成部分。它是一种容许编程语言操作网站内容、构造和格调的界面。JavaScript是连贯到互联网浏览器中的DOM的客户端脚本语言。

参考:https://www.digitalocean.com/...

14. 工厂和类

JavaScript是一种基于原型的语言,意味着对象的属性和办法能够通过具备克隆和扩大能力的通用对象来共享。这被称为原型继承,与类继承不同。

参考:https://www.digitalocean.com/...

15. this, call, apply 和 bind

这些函数对每个JavaScript开发者来说都十分重要,简直每个JavaScript库或框架都会用到。

参考:https://levelup.gitconnected....

16. new, Constructor, instanceof 和 Instances

每个JavaScript对象都有一个原型。JavaScript中的所有对象都从其原型继承其办法和属性。

参考:https://codeburst.io/javascri...

17. 原型继承和原型链

对于有基于类的语言(如Java或C++)教训的开发者来说,JavaScript有点令人困惑,因为它是动静的,自身不提供类的实现(ES2015中引入了 class的关键字,但只是语法糖,JavaScript依然是基于原型的)。

参考:https://developer.mozilla.org...

18. Object.create 和 Object.assign

Object.create 办法是在JavaScript中创立一个新对象的办法之一。

参考:https://medium.com/@happymish...

19. map, reduce, filter

即便你不晓得函数式编程是什么,你也可能始终在应用map、filter和reduce,因为它们十分有用,能够让你写出更整洁的逻辑,从而让你的代码不那么蹩脚。

参考:https://medium.com/@bojangbus...

20.纯函数、副作用、状态渐变和事件流传

咱们的许多bug都源于与IO相干的、数据渐变的、产生副作用的代码。这些问题在咱们的代码库中随处可见--从承受用户输出、通过http调用接管一个意外的响应,或向文件系统写入等。是一个残暴的事实,所以咱们也要正确的看待并解决它。

参考:https://hackernoon.com/javasc...

21.闭包

闭包是将函数与对其四周状态(词法环境)的援用捆绑在一起的组合。换句话说,闭包容许咱们从外部函数拜访内部函数的作用域。在JavaScript中,闭包在每次创立函数时创立。

参考:https://developer.mozilla.org...

22. 高阶函数

JavaScript能够承受高阶函数。这种解决高阶函数的能力,以及其余特点,使JavaScript成为非常适合函数式编程的编程语言之一。

参考:https://www.sitepoint.com/hig...

23. 递归

参考:https://www.freecodecamp.org/...

24. 收集器和生成器

生成器对象是由生成器函数返回的,它同时合乎可迭代协定和迭代器协定。

参考:https://developer.mozilla.org...

25. Promise

Promise对象示意一个异步操作的最终实现(或失败)及其后果值。

参考:https://developer.mozilla.org...

26. async/await

参考:https://javascript.info/async...

27. 数据结构

Javascript每天都在一直倒退。随着React、Angular、Vue、NodeJS、Electron、React Native等框架和平台的迅速倒退,在大规模利用中应用javascript曾经变得相当广泛。

参考:https://blog.cloudboost.io/pl...

28. 低廉的运算和大O符号

"什么是大O符号?"这是一个十分常见的开发人员的工作面试问题。简而言之,它是一种数学表达方式,即依据输出的工夫长短,一个算法须要运行多长时间,通常说的是最坏状况。

参考:https://medium.com/cesars-tec...

29. 算法

在数学和计算机科学中,算法是一个定义明确的指令的无限序列,通常用于解决一类特定问题或进行计算。

30. 继承、多态性和代码重用

类的继承是一个类扩大另一个类的形式,因而咱们能够在现有的根底上创立新的性能。

参考:https://javascript.info/class...

31. 设计模式

每个开发人员都在致力编写可保护、可浏览和可重用的代码。当应用程序变得越来越大时,代码的结构化变得更加重要。设计模式被证实是解决这一挑战的要害--为特定状况下的独特问题提供一个组织构造。

参考:https://www.digitalocean.com/...

32. 部分利用、柯里化、组成和管道

函数组合是一种将多个简略的函数组合起来以建设一个更简单的函数的机制。

参考:https://www.codementor.io/@mi...

33. 简洁代码

编写洁净的、可了解的、可保护的代码是每个开发者都要把握的一项技能。

参考:https://www.freecodecamp.org/...

如果你感觉这份清单很有用,别忘了把它珍藏起来,并关注我以取得更多相似的内容。


编辑中可能存在的bug没法实时晓得,预先为了解决这些bug,花了大量的工夫进行log 调试,这边顺便给大家举荐一个好用的BUG监控工具 Fundebug。

https://dev.to/eludadev/33-ja...

交换

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。