面试中被问到最多的 19 个 JavaScript 问题
如果你刚刚毕业并打算进入前端领域,那么恭喜你做出了正确的选择。因为该领域目前正在蓬勃发展,React、Angular 和其他高级框架等新技术正在发挥其作用。
然而,其实面试官并不强求新人能够完全掌握任何此类框架。他们只希望大家对 HTML、CSS 和最重要的 JavaScript 等基本 Web 技术有深入的了解。在我申请的多家公司中,经过几次的拒绝和一些选择,我明白了一件事:如果你申请的公司正在寻找可以从事高级 JS 框架工作的专业人员,他们只是需要对 JavaScript(所有这些框架的基础)有深入了解的人。在这里,我们将讨论在面试中经常被问到的 19 个常见的 JavaScript 面试问题。
1.什么是对象以及如何创建它?
一切都是对象,因为 JavaScript 是一种基于对象的语言。 不过我们可以将对象定义为具有自己的行为和状态的实体。
创建对象的常用方法是使用“new”关键字创建实例。
Var object = new Object();
2.什么是 Scope ?
Scope 决定了如何在代码的特定部分中访问对象、函数或变量。
有 2 种类型 –
全局 —— 变量在函数外部定义,可以从代码的任何部分访问。
var name = 'LambdaTest'; console.log(name); // logs 'LambdaTest' function newLogName() { console.log(name); // 'name' 在这里和其他任何地方都可以访问 } newLogName();
本地 —— 在这里,变量是在函数内部定义的,只有在函数内部调用时才能访问。
// Global Scope function sampleFunction() { // Local Scope #1 function oldFunction() { // Local Scope #2 } } // Global Scope function newFunction() { // Local Scope #3 } // Global Scope
3.“this”是什么意思?
与其他面向对象的编程语言中“this”是由类实例化的对象不同,在 JavaScript 中,“this”是一个对象,它是方法的所有者。
4.什么是匿名函数?
顾名思义,它是一个没有名字的函数。 它们是在运行时使用函数运算符动态声明的,因为它提供了比声明符更大的灵活性。
var display=function(){ alert("匿名函数被声明"); } display();
5.你对 BOM 了解多少?
BOM,也称为浏览器对象模型,用作浏览器的交互介质。 默认对象是窗口,所有函数都可以直接调用,也可以通过指定窗口来调用。 History、Screen、location,是 Window 的不同属性。
6.什么是 DOM 及其用法?
Document Object Model,俗称 DOM,代表 HTML 文档。 它用于更改 HTML 文档的内容。
7.如何从特定索引返回字符?
charAt() 方法可用于找出任何特定索引处的字符值。 考虑到“n”是字符串的长度,索引可以从 0 开始,到“n-1”结束。 然而,索引的值不能为负数,不能等于或大于字符串的长度。
var str="LambdaTest"; document.writeln(str.charAt(4));
8.“==”和“===”的区别
这可能是被问得最多的 JavaScript 面试问题。类型转换相等 (==) 检查 2 个变量是否相似,无论它们的数据类型如何。 例如 ("3" ==3) 将返回 true。严格相等 (===) 检查 2 个变量是否具有相似的数据类型和值。 例如 ("3" ===3) 将返回 false。
9.JS 中有哪些不同的数据类型?
JavaScript 有以下数据类型——
10.什么是原型属性?
原型属性通常用于实现继承。 每个函数都有一个,默认值为空。 方法和属性被添加到原型中以使其可用于实例。 你可以用一个计算矩形周长的例子来回答这个 JavaScript 面试问题。
function Rectangle(x, y) { this.x = x; this.y = y; } Rectangle.prototype.perimeter = function() { return 2 * (this.x + this.y); } var rectangle = new Rectangle(4, 3); console.log(rectangle.perimeter()); // 输出 '14'
11.什么是闭包?
在 JavaScript 函数中定义的函数称为闭包。它可以访问 3 种类型的范围(内部、外部和全局)。在外部函数的情况下,除了访问变量之外,它还可以查看参数。
12.如何用 JavaScript 编写“Hello World”?
这可能是向所有新生提出的非常基本的 JavaScript 面试问题。它可以使用以下语法编写,可以放置在 HTML 文件的正文中。document.write(“JavaScript Hello World!”);
13.如何使用外部 JS 文件?
可以通过使用以下语法从 HTML 文档调用文件来完成,就像调用外部 CSS 文件一样。
<script type="text/javascript" src="custom.js"></script>
14.异步编程及其重要性
在这里,JS 引擎在事件循环中运行。当遇到阻塞操作时,会触发请求并且代码会不断运行。一旦响应准备好,就会触发中断。执行事件处理程序,而控制流继续。因此,通过异步编程,单个线程可以同时处理多个操作。
15.窗口对象的使用
这不是 JavaScript 对象,而是浏览器自动创建的外部窗口。它用于显示弹出对话框。例如 alert() - 显示带有自定义消息和“确定”按钮的警报框。
16.客户端 JavaScript 与服务器端有何不同?
客户端 JavaScript 通常由基本语言以及与在浏览器中运行的脚本相关的某些预定义对象组成。由 HTML 直接嵌入,在运行时由浏览器执行。服务器端 JS 几乎类似于客户端。但是,它是在服务器中执行的,并且只有在代码编译完成后才能部署。
你可以将此认证作为 JavaScript 测试自动化领域专业知识的证明,以增强自己的能力并提升你的职业生涯。
17.为什么 JavaScript 需要调试?
这是另一个重要的 JavaScript 面试问题。通常会发生脚本在浏览器中没有显示任何错误的情况。但是输出与预期的不相似。在这种情况下,找出错误的最佳选择是通过调试。这可以通过 console.log() 或使用 debugger 关键字来完成。
18.什么是函数提升?
提升是 JavaScript 中的一种机制,其中函数声明和变量在代码执行之前被移动到作用域的顶部。这意味着无论变量和函数在哪里声明,无论作用域是局部的还是全局的,函数都被移到作用域的顶部。
19.JavaScript 中变量的命名约定
在命名变量时,我们必须遵循一定的规则——
不要使用 JavaScript 保留的关键字。例如——Boolean、static 等。
不要以数字开头的变量名。以“_”或字母开头。例如,不要写 123func,而是 func123 或 _123func。
变量区分大小写。 ‘Func’ 和 ‘func’ 将代表不同含义。
总结
除了上面提到的 javascript 面试问题外,还有很多常见的 JS 问题在面试中被问到。这完全取决于面试官的想法和他擅长的部分。提高你在所有基础知识方面的技能,你就可以准备好迎接下一次面试了。我希望这篇文章对那些准备 Javascript 面试的人有用。此外,大家可以在评论区分享那些在你脑海中留下深刻印象的 Javascript 面试问题。
希望大家能够给海海点个 ,你的支持是海海更新的动力!后面我会持续分享面试经验 & 前端相关的专业知识,
最后祝大家都能找到满意的实习和秋招offer!