

除了应付前端开发岗位的面试,在实际工作和使用 JavaScript 的过程中,你更应该掌握这些基本的概念。
自学 JavaScript
有很多人学习 JavaScript 和 Web 开发,并且希望找到一份工作。通常,自学会使人们对 JavaScript 语言本身的理解在知识盲点。
令人感到惊讶的是制作复杂的网页只需要很少的语言知识。实际上,那些能开发整个网站的人往往对 JavaScript 的基本原理没有很好的把握。
使用基本技能来避免复杂的问题和实现功能是相当容易的。通过 Stack Overflow ,在不理解被复制的代码的情况下,创建一个网站也是十分容易。
面试
问题是,许多技术公司在面试中提问时,目的是检验你对 JavaScript 是否真正理解。当求职者只是对 JavaScript 有粗浅的认识,而不是深刻理解这门语言,面试官会很快清楚是什么情况。
以下是在 Web 开发面试中经常被问到的概念。 当然,我们假设您已经知道诸如循环,函数和回调之类的基础知识。
概念
1、 原始值和引用值(Value vs. Reference) —— 了解如何将对象,数组和函数复制并传递给函数。要知道引用时复制了什么。理解原始值是通过复制值来进行复制和传递的。
2、 作用域(Scope) —— 了解全局作用域,函数作用域和块作级用域之间的区别。了解哪些变量在哪些地方可用。知道 JavaScript 引擎如何执行变量查找。
这里有相关译文:深入理解JavaScript中的作用域和上下文
3、 提升(Hoisting) —— 理解变量和函数声明会被提升到可用作用域的顶部。 理解函数表达式不会被提升。
也可以看看这篇文章:JavaScript 中的 Hoisting (变量提升和函数声明提升)
4、 闭包(Closures) —— 知道一个函数保留,并且可以访问创建它的作用域。知道这些可以让我们做什么,例如数据隐藏、内存化以及动态函数生成。
了解一下作用域和闭包 之间的联系
5、 this —— 知道 this
绑定的规则。知道它的工作机制,知道如何弄清楚在一个函数中它等同于什么,或者说指向什么?并知道为什么它是有用的。
6、 new —— 知道它如何与面向对象编程相关。知道用 new
调用的函数会发生什么。理解如何使用 new 来继承函数 prototype(原型) 属性生成的对象。
7、 apply, call, bind —— 知道这些函数的工作机制。 知道如何使用它们。了解它们对 this 做了什么。
8、 原型和继承(Prototypes & Inheritance) —— 了解 JavaScript 中的继承是通过 [[Prototype]]
链实现的。了解如何通过函数和对象来设置继承,以及 new
是如何帮助我们实现的。知道 __proto__
和 prototype
属性是什么,以及他们的作用。
9、 异步 JS(Asynchronous JS) —— 理解事件循环,理解浏览器是如何处理用户输入、Web 请求和一般事件的。知道如何识别并正确实现异步代码。理解 JavaScript 中异步和单线程分别是怎样的。
10、 高阶函数(Higher Order Functions) —— 理解这些函数是 JavaScript 中的一等公民,以及这意味着什么。 知道从另一个函数返回一个函数是完全合法的。 了解闭包和更高阶函数允许我们使用的技巧。
理解 高阶函数(Higher Order Functions) 在 JavaScript 函数式编程中的应用:
- JavaScript 中的 Currying(柯里化) 和 Partial Application(偏函数应用)
- 一步一步教你 JavaScript 函数式编程(第一部分)
- 一步一步教你 JavaScript 函数式编程(第二部分)
- 一步一步教你 JavaScript 函数式编程(第三部分)
更多资源
如果翁中包含的链接不够说明,建议你自己搜索相关的资源来帮助你学习这些概念。
这里是我已阅读或观看的资源,至少有一些,可以推荐。大家也可以自行搜索相关的译文。
- 10道典型的JavaScript面试题
- 3个经常被问到的 JavaScript 面试题
- You Don’t Know JS
- JavaScript is Sexy
- javascript.com
- Frontend Masters
- Eloquent JavaScript
祝你面试好运!如果你还有什么需要补充或者讨论的,欢迎留言。
最新评论
写的挺好的
有没有兴趣翻译 impatient js? https://exploringjs.com/impatient-js/index.html
Flexbox playground is so great!
感谢总结。
awesome!
这个好像很早就看到类似的文章了
比其他的教程好太多了
柯理化讲的好模糊…没懂