在javascript面试中,你必须要知晓的10个概念(译)

前言

  • 这是根据一篇英文博客翻译而来的,有的地方是根据自己的语言来解释的,有的地方可能翻译的不太准确,括号里的内容一般为我自己在原内容上进行的一些补充或延伸。

原文地址(英)

自我学习

  • 这里有成百上千的人希望找到一份工作而去学习javascript和web开发。通常,有的人在自学的过程中会对javascript语言本身的理解不够透彻,从而留下很多空白。
  • 事实上令人惊讶的是,写出一个复杂网页所并不需要非常多语言方面的知识。而有的人独立开发整个网站的过程中,并没有掌握到javascript的原理知识。
  • 避免使用复杂的语言应用,而只是用最基础的技巧来实现功能现象是非常简单的。同样的,依赖Stack Overflow上的答案代码来构建网站也很简单,尽管你可能并没有彻底理解你在网上复制的代码。

面试

  • 有一个问题在于,如何测试你对js的掌握能力,通常仅限于各个公司面试时提出的那些面试题。当一个求职者,刷了很多面试题,为了面试题做了充分的准备,可能他很快就知道了那些面试题的答案,尽管他可能并没有扎实的javascript语言基础。
  • 下面会列举一些web前端面试中经常会提到的概念。这里假设你已经掌握了javascript的语言基础,比如函数、闭包、回调等等。

概念

  1. 值和引用——掌握对象、数组、函数是作为引用来传递的;而基础类型是按值传递的。(理解变量类型以及值传递和引用传递的区别)
  2. 作用域——理解全局作用域、函数作用域和块作用域的区别。知道在哪些地方可以使用哪些变量,理解javascript引擎是如何执行变量查找的。(在es6加入let、const之后又会对作用域产生什么影响呢?)
  3. 变量提升——理解变量提升和函数提升的概念,会被提升到当前作用域的底部。知道函数表达式并不会提升。(知道es6加入let、const之后不能提升变量了,以及暂时性死区的概念)
  4. 闭包——知道函数如何使创建时的作用域可以一直访问。知道这个特性可以让我们做什么,比如:隐藏数据、缓存数据、动态生成函数等等。
  5. this——理解this绑定的规则。知道它是如何工作的,知道在函数里的this指向的谁/和谁等价。(es6加入箭头函数后,this在箭头函数里有何变化)
  6. new——理解new关键字是如何和面向对象编程关联起来的。知道调用new关键字时,具体发生了些什么。知道new关键字是如何生成一个对象,以及如何继承构造函数的prototype的。(引入class概念后,实例化一个class以及继承一个class和object对象有什么区别吗)
  7. apply、call、bind——知道如何使用这几个函数,理解他们的工作原理,知道他们对this做了什么。
  8. 原型和继承——明白js中的继承是通过原型链来实现的。知道如何应用对象和函数来建立继承关系,并用new关键字帮助我们实现继承。知道proto和prototype是干嘛的,他们有什么用。
  9. 异步js——理解事件循环。知道浏览器一般是如何来处理用户输入、网络请求以及event事件的。知道如何组织并正确地使用异步js代码。明白JavaScript既是异步的,又是单线程的。(理解事件队列的概念,知道promise、generator的用法)
  10. 高阶函数——明白函数是JavaScript语言里的一等公民,并知道这意味着什么。理解从一个函数里返回另一个函数是完全合法的。知晓我们能通过闭包和高阶函数所能应用的技巧。(这里的概念有点抽象,感觉只能意会不可言传)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,221评论 0 13
  • 暑假第53天,周四。 今早上孩子起床稍晚,她起来后一屁股坐下来做数学。我倒了杯水端进去让她喝,随后...
    记得祝福阅读 186评论 0 3
  • 文/巧笑_倩兮_ 张爱玲短篇小说《琉璃瓦》不知道大家读过没有?很紧凑的一篇美文。 姚先生跟太太生了七个女儿,一个比...
    巧笑_倩兮_阅读 1,267评论 0 4
  • 百日阅读第30天 分享人:雪舞55 书名:愿你与这世界温暖相拥 页数:p82-P101 感想:寻找最重要的事情,其...
    雪山飞狐儿阅读 100评论 0 0