一个面试是一个重要的组成部分招聘流程。它提供了有关个人承担挑战性任务的技能、知识和能力的见解。这也是雇主筛选不适合职位的候选人的最可靠方法之一。
JavaScript常见面试问题有哪些?作为JavaScript 开发人员,你必须在参加考试或面试之前做好准备。这将增加你被知名公司聘用的机会。
现在你可能想知道从哪里开始准备或者他们会在面试中问什么问题。
因此,为了帮助你,我整理了一份常见的JavaScript面试问题合集列表。这些问题中的每一个都有一个简短的答案,你可以在下面查看。
最后,你会更有信心回答面试官的任何问题。所以,事不宜迟,让我们开始吧。
1- 什么是 JavaScript?
JavaScript面试问题解析:JavaScript 是 Netscape 于 1995 年创建的一种脚本语言。它最初用于流行的 Web 浏览器Netscape Navigator。但是,如今,我们可以将它用于客户端和服务器端应用程序开发。
嗯……我不认为有人会问这个问题,但我们不应该忘记 JavaScript 是从哪里来的。
2- 列出 JavaScript 的一些优点?
- JavaScript 可以在 Web 浏览器中脱机工作。
- 它支持多种编程范式。例如,我们可以使用面向对象、函数式和命令式编程概念。
- 它拥有最大的开源库和框架集合。
- JavaScript 能够创建在线/离线游戏、桌面软件、网站和移动应用程序。
- 无需学习单独的编程语言来创建网站的前端和后端。所有主要的 Web 浏览器都支持 JavaScript,它可以在使用 Node.js 的服务器上运行。
- 它是一种解释型语言。这意味着我们不必在使用前构建或编译它的代码。JavaScript 指令直接执行。
3- 我们应该使用内部还是外部 JavaScript?
JavaScript常见面试问题有哪些?当我们只需要在单个网页上使用它时,内部 JavaScript 更合适。而对于具有多个网页的网站,始终更喜欢使用外部 JavaScript 文件。
4- 为什么像 Autooptimize 这样的 WordPress 插件将 JavaScript 代码聚合在一个文件中?
JavaScript 源代码在单个文件中的聚合减少了在生成网页时向服务器发出的请求数量。反过来,它使网站加载速度更快。
例如,假设我们在一个网页上包含了 10 个 JavaScript 文件。现在,当我们打开此网页时,我们的 Web 浏览器会向服务器发送 10 个 HTTP 请求以检索这些文件。另一方面,如果我们将所有这些文件的代码聚合成一个,那么我们只需要向服务器发出 1 个请求。
5- 什么是 JavaScript 提升?
JavaScript面试问题合集:提升是 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 中“严格模式”的使用。基本上,它是一个受限制的变体,其中 JavaScript 显示所有错误和警告,即使它们是静默的。
我们可以使用"use strict";
脚本开头的指令启用“严格模式” 。
8- Svelte 有哪些替代品?
Svelte 是 JavaScript 编程语言的前端开发框架。它的一些流行替代品包括:-
- 反应
- Vue.js
- 角
9- 什么是自调用函数?
自调用函数与普通函数略有不同,因为它们在声明的地方立即执行。
通常,我们首先声明一个函数,然后才调用它。但是,JavaScript在运行时自动执行自调用函数的代码。
需要注意的一点是,这些函数没有任何名称。反过来,我们也无法回忆起这些类型的功能。它们也被称为“匿名函数”。
这是自调用函数的示例。
(function (){
var a = 12;
var b = 3;
console.log(a * b);
}());
10-“var”、“let”和“const”有什么区别?
无功 | 让 | 常量 |
---|---|---|
它从 JavaScript 一开始就可用。 | 这是一种在 JavaScript 中声明变量的新方法,从 ES6 开始。 | const 用于存储在整个脚本执行过程中不会更改的值。它最近也在 ES6 中引入。 |
它具有全局/函数作用域。 | 它具有块作用域。 | 它还具有块作用域。 |
可以在其范围内更新或重新声明。 | 我们不能重新申报它们。 | const 代表一个常量值,所以它不能被更新或重新声明。 |
通过我的文章了解 JavaScript 中的变量、作用域和提升来了解更多关于它们的信息
11- “==”和“===”有什么区别?
它们都在 JavaScript 中用于执行两个值之间的比较。
== 运算符 | === 运算符 |
---|---|
它是一个类型转换运算符。 | 它是一个严格相等运算符。 |
它仅用于比较两个值。 | 它比较两个值及其类型。 |
12- “null”和“undefined”关键字之间有什么区别吗?
JavaScript面试问题合集:这两个关键字都代表一个空值。但是,null和undefined之间有两个基本区别。
空值 | 不明确的 |
---|---|
我们声明一个变量并为其赋值null 。 | 我们声明一个变量而不赋值。 |
(空)“对象”的类型 | (未定义)“未定义”的类型 |
13- 区分“函数声明”和“函数表达式”?
JavaScript面试问题解析:基本上,函数声明只不过是使用关键字function
、其唯一名称、参数和函数体定义函数的正常过程。而当我们将一个函数声明分配给一个变量时,它就变成了Function Expression。
有趣的是,函数表达式没有被提升。这意味着如果你在定义之前尝试调用它们,它们将显示错误。
函数声明:-
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常见面试问题有哪些?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代表“非数字”。这是当我们无法执行操作时出现的特殊值。
例如,如果我们尝试使用数字(例如“Hello World” / 5)分割字符串会怎样。
17- 解释 for-in 循环?
JavaScript面试问题合集: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面试问题解析:JavaScript 是一种脚本语言,而 ECMA Script 是一组准则和规则,用于在不同的 Web 浏览器中标准化 JavaScript。
20- 如何使用 JavaScript 创建 cookie?
JavaScript常见面试问题有哪些?在 JavaScript 中,可以使用document.cookie对象创建 cookie 。只需为其分配一个字符串值,该值只是一系列用分号分隔的键值对。
JavaScript 创建 Cookie 示例:-
document.cookie = "username=Juan; expires=Wed, 03 Oct 2030 12:00:00 UTC; path=/";
JavaScript面试问题合集结论
雇主通常试图通过提出棘手的问题来混淆申请人。因此,如果你没有做好充分准备,那么你很可能最终会失去机会。
所以,今天,我尝试回答一些常见的JavaScript 面试问题。你甚至可以在面试前将其用作参考。
谢谢阅读!