JavaScript 面试必须知道的 10 个概念

(点击上方公众号,可快速关注)


编译:伯乐在线/叙帝利

如有好文章投稿,请点击 → 这里了解详情



自学

有成千上万的人为了得到一份工作而学习 JavaScript 和 Web 开发。通常,自学的人对 JavaScript 语言的理解并不深刻。

令人惊讶的是,制作复杂的 Web 页面所需的语言很少。独立建设全站的人往往对 JavaScript 的基本原理不太了解。

我们可以很容易地避免复杂的问题,使用基本技能就可以实现一些效果。依靠 Stack Overflow 就可以很容易地创建一个网站而不需要理解复制的代码。

如果您想顺利通过 JavaScript 面试,请看看这个教程 提高你的 JS 水平:中级 JavaScript 完整指南(https://www.educative.io/collection/5679346740101120/5707702298738688?authorName=Arnav%20Aggarwal)


面试

很多科技公司在面试中会考察你对 JS 的理解。一个知识丰富的求职者可以很快地回答这些问题,但是他对语言的理解并不深刻。

以下是 Web 开发面试中经常被问到的概念。理解这些概念的前提是你已经掌握了基本知识,比如循环,函数和回调函数。

概念

  1. 数值类型 vs. 引用类型 —了解如何复制对象、数组和函数以及如何将它们传递到函数中。知道引用类型复制的是什么。了解原始值是通过复制值来复制及传递的。

  2. 作用域 —了解全局作用域、函数作用域及块作用域的不同。了解变量的作用范围。知道 JavaScript 引擎如何查找变量。

  3. 声明提升 — 了解变量和函数声明会被提升到可用范围的顶部。了解函数表达式不会被提升。

  4. 闭包 — 知道函数内部创建的函数可以访问该函数的作用域。知道这种方式允许我们做什么,比如数据隐藏、记忆以及动态函数变换。

  5. this — 知道 this 绑定的原则。知道它的工作原理,在函数中指代的内容以及为什么有用。

  6. new — 知道它与面向对象编程的关系。知道使用 new 调用的函数发生了什么。了解使用 new 生成的对象是如何从函数的原型继承的。

  7. applycallbind — 知道每个函数是如何工作的。知道如何使用它们。知道它们对 this 做什么。

  8. 原型 & 继承 — 了解 JavaScript 的继承是通过 [[Prototype]] 实现的。了解如何通过函数及对象建立继承并通过 new 实现继承。理解__proto__ 及 prototype 的属性以及作用。

  9. 异步的 JS — 了解事件循环。理解浏览器如何处理一般的用户输入、网络请求以及事件。知道如何正确认识和实现异步代码。了解 JavaScript 是异步的和单线程的。

  10. 高阶函数 — 了解 JavaScript 中的函数是第一类对象以及它的意义。知道从另一个函数返回函数是完全合法的。了解闭包及高阶函数允许使用的技术。


更多资源

如果上面的链接不够,那么还有无数的资源可以帮助你学习这些概念。

我创建了 提高你的 JS 水平:中级 JavaScript 完整指南(https://www.educative.io/collection/5679346740101120/5707702298738688?authorName=Arnav%20Aggarwal)这个教程以帮助开发者提高他们的知识。它涵盖了所有提到的概念甚至更多。

以下是我看过而且值得推荐的一些资源。第一个是我自己写的。

  • Step Up Your JS

  • You Don’t Know JS

  • JavaScript is Sexy

  • javascript.com

  • Frontend Masters

  • Eloquent JavaScript


祝你面试成功。


点击「阅读原文」,查看原文资源链接


觉得本文对你有帮助?请分享给更多人

关注「前端大全」,提升前端技能

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
26.在JS中如何获取id为username的文本框的值,如何获取名字为username的文本框的值,用JS代码表示(2分) var userName=document.getElementsByName("username")[0].value; var username=document.getElementById("username").value; 27.用JS代码清空所有文本框的值,用JS代码表示(3分) var inputs = document.getElementsByTagName("input"); for( var i = 0 ; inputs.length ; inputs++ ) { if(inputs[i].type == "text" ) { inputs[i].value = ""; } } 28.JS中用什么方法去读取DIV标记的HTML内容,和文本内容,用代码表示,假设这个DIV的id为div1(2分) var div= document.getElementById(“div1”)[removed]; 29.用JS实现一个id为book的div的显示和隐藏(1分) .解释evel函数 (1分) evel函数可以接受一个字符串作为参数,并把此字符串当做一段javascript代码去执行,如果字符串执行结果是一个值则返回此值,否则返回undefined。如果参数不是一个字符串,则直接返回该参数 40.数组的join方法和字符串的split方法的作用是什么 (2分) join()把数组中的所有元素放入一个字符串中 参数separator默认逗号为分隔符 split() 将一个字符串分割为子字符串,将结果作为字符串数组返回,若字符串中存在多个分割符号,亦可分割。 41.如何判断一个对象的值为null,用代码实现,假设对象的名字为obj (1分) var objld=doucment.getElementsByName(“obj”); if (objld==null){……} 42.用代码实现动态生成一个按钮,并添加到一个id为div1的标签中 (2分)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值