20个常见的JavaScript面试问题
面试是招聘过程中的一个重要部分。它可以让人了解一个人的技能、知识和承担挑战性任务的能力。它也是雇主筛选出不适合工作岗位的候选人的最可靠的方法之一。
作为一名JavaScript开发人员,你必须在参加考试或面试前做好准备。这将增加你被知名公司聘用的机会。
现在你可能想知道从哪里开始准备,或者他们在面试中会问什么问题。
因此,为了帮助你,我汇编了一份常见的JavaScript面试问题清单。每个问题都有一个简短的答案,你可以在下面查看。
最后,你会更有信心回答面试官的任何问题。所以,不用多说了,让我们开始吧。
1- 什么是JavaScript?
JavaScript是Netscape公司在1995年创造的一种脚本语言。它最初被用在流行的网络浏览器Netscape Navigator上。但是,如今,我们可以将它用于客户端和服务器端的应用开发。
嗯......我不认为有人会问这个问题,但我们不应该忘记JavaScript的来源。
2- 列出JavaScript的一些优点?
- JavaScript可以在网络浏览器中离线工作。
- 它支持多种编程范式。例如,我们可以利用面向对象、功能和强制性的编程概念。
- 它拥有最大的开源库和框架集合。
- JavaScript能够创建在线/离线游戏、桌面软件、网站和移动应用程序。
- 不需要学习单独的编程语言来创建网站的前端和后端。所有主要的网络浏览器都支持JavaScript,它可以使用Node.js在服务器上运行。
- 它是一种解释性的语言。意味着我们在使用前不需要构建或编译它的代码。JavaScript指令直接执行。
3- 我们应该使用内部还是外部的JavaScript?
当我们只需要在一个网页上使用时,内部JavaScript更适合。而对于有多个网页的网站,总是喜欢用外部的JavaScript文件。
4- 为什么像Autoptimize这样的WordPress插件将JavaScript代码聚集在一个文件中?
将JavaScript源代码聚集在一个文件中,可以减少生成网页时对服务器的请求数量。反过来,它使网站的加载速度更快。
例如,假设我们在一个网页上包含了10个JavaScript文件。现在,当我们打开这个网页时,我们的网络浏览器会向服务器发送10个HTTP请求,以便检索这些文件。另一方面,如果我们把所有这些文件的代码汇总成一个,那么我们只需要向服务器发出一个请求。
5- 什么是JavaScript吊装?
悬挂是JavaScript中的一个概念,它允许我们在变量和函数被声明之前就使用它们。
基本上,当我们执行一段JavaScript代码时,首先它会自动从代码中提取所有的变量和函数声明,并将它们移到其范围的顶部。之后,它开始执行代码。
悬挂的主要好处是,我们的代码可以正常工作,不会显示任何诸如**"未定义变量 "或"未定义函数 "的错误。**
6- 预测以下代码的输出?
代码:
username = "Juan Cruz Martinez";
var username; // variable declaration
var username; // redeclared the variable
console.log(username);
输出:
Juan Cruz Martinez
解释:
- 首先,第2行和第3行的变量声明将被视为一条语句。
- 现在,将应用提升的概念。意思是说,JavaScript将把变量声明移到顶部。在这之后,代码将被执行。
- 另外,请记住,即使我们重新声明一个变量,存储在该变量中的值也不会丢失。
7- 什么是JavaScript的 "严格模式"?
如果我们犯了一个小错误,JavaScript的默认行为是非常宽容的。这意味着,它不会显示任何错误信息。但是,有时在开发中,我们需要看到各种错误和警告来调试代码。
这里就涉及到JavaScript中 "严格模式 "的使用。基本上,这是一个限制性的变体,JavaScript会显示所有的错误和警告,即使它们是无声的。
我们可以通过在脚本的开头使用"use strict";
指令来启用 "严格模式"。
8- 有哪些可以替代Svelte的软件?
Svelte是一个JavaScript编程语言的前端开发框架。它的一些流行的替代品包括:-
- React
- Vue.js
- Angular
9- 什么是自调用函数?
自调用函数与普通函数有些不同,因为它们在声明的地方立即执行。
通常情况下,我们先声明一个函数,然后再调用它。但是,JavaScript会在运行时自动执行自调用函数的代码。
需要注意的一点是,这些函数没有任何名字。反过来,我们也无法想起这些类型的函数。它们也被称为 "匿名函数"。
下面是一个自调用函数的例子。
(function (){
var a = 12;
var b = 3;
console.log(a * b);
}());
10- "var"、"let "和 "const "之间有什么区别?
变量 | let | 常数 |
---|---|---|
它从一开始就可以在JavaScript中出现。 | 它是JavaScript中声明变量的一种新方式,从ES6开始。 | const用于存储一个在整个脚本执行过程中不会被改变的值。它也是最近在ES6中引入的。 |
它有一个全局/函数范围。 | 它有块作用域。 | 它也有块的范围。 |
可以在其范围内更新或重新声明。 | 我们不能重新声明它们。 | const代表一个常量值,所以它不能被更新或重新声明。 |
11- "=="和"=="之间有什么区别?
在JavaScript中,它们都被用来在两个值之间进行比较。
===运算符 | ===运算符 |
---|---|
它是一个类型转换操作符。 | 它是一个严格的等价运算符。 |
它只用于比较两个值。 | 它对两个值以及它们的类型进行比较。 |
12- "null "和 "undefined "关键字之间有什么区别吗?
这两个关键字都代表一个空值。但是,null和undefined之间有两个基本区别。
空值 | 未定义 |
---|---|
我们声明一个变量,并给它赋值为null 。 | 我们声明一个变量,但不分配任何值。 |
(null)的类型 "对象" | (undefined)的类型为 "未定义" |
13- 区分 "函数声明 "和 "函数表达式"?
基本上,函数声明只不过是使用关键字function
、其独特的名称、参数和函数体来定义一个函数的正常过程。而当我们把一个函数声明分配给一个变量时,它就变成了函数表达式。
值得注意的是,函数表达式是不吊销的。这意味着,如果你在定义之前试图调用它们,它们将显示一个错误。
函数声明:
function full_name(first_name, last_name)
{
return first_name + " " + last_name;
}
函数表达式:
var addition = function add(value_1, value_2)
{
return value_1 + value_2;
}
14- 什么是闭包?
在JavaScript中,一个闭包是一个在另一个函数中的函数。内层函数可以访问自己的变量、外层函数中定义的变量以及全局变量。
闭包示例:
var a = 2;
function outer()
{
var b = 4;
function inner()
{
var c = 6;
console.log(a + b + c);
}
inner();
}
outer();
15- 预测这两个函数的输出?它们是否会返回相同的输出?
function user1()
{
return {
name: "Juan"
};
}
function user2()
{
return
{
name: "Juan"
};
}
console.log(user1());
console.log(user2());
函数user1()的输出
{name: "Juan"}
函数user2()的输出
undefined
16- 什么是NaN?
在JavaScript中,NaN代表**"Not a Number"。**它是一个特殊的值,当我们无法执行一个操作时就会出现。
例如,如果我们试图用一个数字来分割一个字符串(如 "Hello World"/5),会怎么样?
17- 解释一下for-in循环?
for-in循环是专门设计的,它以一步一步的方式循环浏览对象的所有属性。它在每次迭代中从对象中选择一个属性,并对其执行所需的操作。
让我们借助一个例子来理解它。
var user = {
"name": "Juan",
"country": "Germany",
"website": "livecodestream.dev"
};
for(var key in user)
{
if(user.hasOwnProperty(key))
{
console.log(key + " -> " + user[key]);
}
}
输出:
name -> Juan
country -> Germany
website -> livecodestream.dev
18- 什么是事件泡制和捕获?
在JavaScript DOM中,HTML元素相互嵌套,形成一个层次结构。
现在,如果父元素和子元素都为一个特定的事件注册了一个句柄,那么事件传播的顺序是什么?
它可以通过两种方式确定,即事件冒泡和捕获。
在事件冒泡中,子元素将首先捕获事件,然后将其传播给父元素。而在事件捕获中,父元素将首先捕获事件,然后将其传播给子元素。
19- JavaScript和ECMA脚本之间的区别是什么?
JavaScript是一种脚本语言,而ECMA脚本是一个准则和规则的集合,用于规范不同网络浏览器的JavaScript。
20- 如何用JavaScript创建一个cookie?
在JavaScript中,可以使用document.cookie对象来创建一个cookie。简单地给它分配一个字符串值,就是一系列用分号隔开的键值对。
JavaScript创建Cookie的例子:
document.cookie = "username=Juan; expires=Wed, 03 Oct 2030 12:00:00 UTC; path=/";
总结
雇主们通常会通过问一些棘手的问题来迷惑求职者。因此,如果你没有做好充分的准备,那么你将有可能最终失去机会。
所以,今天,我试图回答一些常见的JavaScript面试问题。你甚至可以在参加面试之前把它作为一个参考。