50 个最常见的 Javascript 面试问题和答案 [2022]

已发表: 2021-01-04

目录

Javascript面试问题和答案

在本文中,我们整理了最常见的JavaScript 面试问题 这些问题将使您了解面试官在面试期间可能会问您的问题类型。
JavaScript 是一种脚本语言,在 Web 开发中非常有用。 Brendan Eich 早在 1995 年就开发了 JavaScript,并被 Facebook 和 Google 等巨头使用。 很难理解 JavaScript 的多功能性。 面试官总是试图在将任命信交给他们之前评估潜在员工的知识。

因此,复习您的 JavaScript 知识非常重要。 以下是面试官可以问你的一些Javascript 面试问题,如果你要去面试。

javascript面试问题和答案分为三类:

  • 初学者级
  • 中级水平
  • 先进的水平

Javascript 面试问题和答案 - 初级

Q1。 JavaScript 和 Java 有何不同?

Javascript 是面向对象的编程或 OOP 脚本语言。 Java 是面向对象的编程或 OOP 编程语言

JavaScript 只能在浏览器上运行。 Java 有助于创建可以在浏览器或虚拟机上运行的应用程序。

JS 以文本形式呈现。 Java需要编译

Q2。 什么是 JavaScript?

JavaScript 是一种轻量级的解释型编程语言,具有面向对象的能力。 它可以帮助您将交互性开发成静态 HTML 页面。

Q3。 JavaScript 支持哪些数据类型?

JavaScript 支持几种数据类型,它们是:

  • 布尔值
  • 空值
  • 细绳
  • 不明确的
  • 象征
  • 目的
  • 数字
    javascript 数据类型

Q4。 JavaScript 有哪些不同的特性?

  • Javascript 是一种轻量级的解释型编程语言。
  • 它旨在创建以网络为中心的应用程序。
  • 它是对 Java 的补充并与之集成。
  • JavaScript 是一种跨平台和开放的脚本语言。

Q5。 JavaScript 是否区分大小写?

是的,JavaScript 区分大小写。

Q6。 JavaScript 有什么优势?

一些优点是:

  • 降低与服务器的交互:在 JavaScript 的帮助下,您将能够在将页面发送到服务器之前验证任何基于用户的输入。
  • 对访问者的即时反馈:即使在页面重新加载之前,访问者也可以立即发现他们是否忘记输入任何内容。
  • 增加交互性:使用 JavaScript,您可以创建不同的界面,一旦用户将鼠标悬停在它们上方或使用键盘激活它们,这些界面就会做出反应。

Q7:如何使用 JavaScript 创建对象?

由于 JavaScript 是一种面向对象的编程脚本语言,它支持 Object 的概念。 通过使用 Object 字面量,您可以创建一个对象。

Q8。 如何使用 JavaScript 创建一个数组?

如果要在 JavaScript 中定义数组,可以使用数组字面量来实现。 例子:

变量 x = [];

变量 y = [1, 2, 3, 4, 5];

问题 9。 JavaScript 中的名称函数是什么,如何定义它?

JavaScript 中的命名函数在定义后声明一个名称。 例子:

函数命名(){

// 这里写代码

}

问题 10。 可以将匿名函数分配给变量,然后将其作为参数传递给另一个函数吗?

使用 Javascript,可以将匿名函数分配给变量并将其作为参数传递给另一个函数。

问题 11。 在 JavaScript 中,什么是参数对象以及如何将参数类型传递给函数?

JavaScript 中的变量参数表示传递给函数的参数。 您可以使用 typeof 运算符来获取参数的类型。

问题 12。 在 JavaScript 中,变量的作用域是什么?

变量的范围是指定义它的程序区域。 有两个范围:

  • 全局变量:全局变量具有全局范围,这意味着它将在您的代码中随处可见。
  • 局部变量:局部变量仅在定义它的函数中可见。

问题 13。 JavaScript 中的“This”运算符有什么作用?

JavaScript 中使用的 'This' 关键字谈论它所属的对象。 它有许多不同的值,取决于它的使用位置。

问题 14。 什么被称为“回调”?

回调是作为选项或参数传递给某个方法的 JavaScript 函数。 Callback 是另一个函数执行完毕后需要执行的函数。

问题 15。 定义闭包?

当特定变量在当前范围之外定义并且可以从某个内部范围内访问时,就会开发闭包。

问题 16。 JavaScript中有哪些内置方法,它们返回的值是什么?

一些内置方法和它们返回的值是:

Concat() 有助于连接两个或两个以上的字符串

CharAt() 有助于返回特定索引处的字符

forEach() 有助于为数组中存在的每个元素调用一个函数

length() 有助于返回字符串的长度

indexOf() 有助于返回第一次出现特定值的调用 String 对象中的索引

push()有助于将一个或多个元素添加到数组的末尾,然后返回该数组的新长度

pop()有助于从数组中删除最后一个元素并返回该元素

reverse()有助于反转数组元素的顺序

问题 17。 JavaScript 中有哪些命名变量的约定?

一些规则是:

  • 不应使用任何 JavaScript 保留关键字作为变量名。
  • JavaScript 中的变量名不能以 0-9 之间的数字开头。
  • JavaScript 中的变量名区分大小写。

问题 18。 TypeOf 运算符的工作是什么?

typeof 运算符可用于获取其操作数的数据类型。 指定的操作数可以是数据结构或文字,例如函数、对象或变量。

问题 19。 如何在 JavaScript 的帮助下创建 cookie?

只需将字符串值分配给 document.cookie 对象,您就可以在 JavaScript 中创建 cookie。

语法:

document.cookie = “key1 = value1; 键 2 = 值 2; 过期 = 日期”;

Q20。 如何使用 JavaScript 读取 cookie?

您可以像在 JavaScript 中创建 cookie 一样简单地读取 cookie,因为它实际上是 document.cookie 对象的值。 如果你想访问那个特定的 cookie,你可以随时使用这个字符串。

  • 通过使用 document.cookie 字符串,您可以保留由分号分隔的名称-值对列表,其中名称实际上是 cookie 的名称,值是字符串值。
  • 您还可以使用字符串的 split() 函数将字符串分解为值和键。

问题 21。 如何使用 JavaScript 删除 cookie?

如果您希望删除 cookie 以使任何后续尝试读取 cookie 都不会返回任何内容,那么您必须将 cookie 的到期日期设置为过去的时间。

让我们继续讨论更多中级 JavaScript 面试问题,这将真正测试你的 JavaScript 知识。

Javascript 面试问题和答案 - 中级

问题 22。 属性与属性有何不同?

属性提供了元素的更多细节,如类型、id、值等。

属性是分配给属性的特定值。 例如,value = 'Name'、type = “text”等。

问题 23。 列出在 JavaScript 代码中访问 HTML 元素的各种方法?

几种方法是:

  • getElementById('idname'):使用该方法,可以通过元素的ID名称获取元素。
  • getElementsByClass('classname'):使用此方法,您可以获得具有给定类名的所有元素。
  • getElementsByTagName('tagname'):使用此方法,您可以获得具有给定标签名称的所有元素。
  • querySelector(): querySelector() 函数采用 css 样式选择器并返回第一个选择的元素。

问题 24。 在 HTML 文件中包含 JavaScript 代码的不同方式有哪些?

三种不同的方式:

  • 排队
  • 外部的
  • 内部的

称为内联函数的 JavaScript 函数被分配给在运行时创建的变量。 另一方面,如果您需要 JavaScript 函数,您可以将脚本集成到您正在工作的页面上,或者您可以将其作为单独的文件放置,以便在需要时调用。 从本质上讲,这成为外部脚本和内部脚本之间的区别。

问题 25。 定义 JavaScript 变量的方法有哪些?

有3种方式:

  • Var – JavaScript 变量语句有助于声明变量。 或者,它也可用于初始化该特定变量的值。
  • Const:使用 const 函数是为了不允许修改调用它的对象。 因此,当一个函数被称为 const 时,该函数可以在任何对象类型上调用。
  • Let: Let 用作表明可以重新分配变量的信号,例如循环中的计数器或算法中的值交换。

问题 26。 什么是类型化语言?

在类型化语言中,值仅与值相关联。 它们与变量无关。 有两种类型的类型化语言:

动态:对于动态类型语言,变量可以包含多种类型。

静态:在静态类型语言中,变量只能保存一种类型。

问题 27。 本地存储与会话存储有何不同?

本地存储——在本地存储中,数据不会在每次 HTTP 请求(图像、HTML、CSS、JavaScript 等)时返回到服务器。 它有助于减少服务器和客户端之间的流量。

会话存储——会话存储与本地存储非常相似。 但是,与本地系统中具有到期时间的数据存储不同,一旦页面会话结束,使用会话存储存储的数据就会被清除。

问题 28。 运算符'=='和'==='有什么区别?

运算符“==”和运算符“===”的区别在于前者通过类型更正来比较变量。 因此,如果您要将数字与带有数字文字的字符串进行比较,则可以使用“==”而不是“===”进行此类比较。 '===' 检查两个变量的值和类型。

问题 29。 null 和 undefined 的差异如何?

未定义是指已声明但尚未进行数据赋值的变量。 但是,null 本身就是一个赋值。

Q30。 未声明和未定义有何不同?

未声明的变量是程序中不存在的变量,因此未声明。 如果程序试图读取它,将会出现运行时错误。 未定义变量是已声明但没有赋予它们值的变量。

问题 31。 列举几个 JavaScript 框架?

JavaScript 框架是指用 JavaScript 编写的应用程序框架。 一些常见的有:

  • 反应
  • Vue

问题 32。 JavaScript 窗口和 JavaScript 文档有何不同?

Window 是一个全局对象,它包含函数、变量、位置和历史记录。

文档是窗口的一部分,被视为 Javascript 窗口的属性。

问题 33。 innerText 和 innerHTML 有何不同?

innerText – 如果在字符串中找到 HTML 标记,则 innerText 不会处理它。

innerHTML – 如果在字符串中找到一个 HTML 标记,则 innerHTML 会对其进行处理。

问题 34。 在 JavaScript 中,什么是所谓的事件冒泡?

事件冒泡是指 HTML DOM API 中事件传播的一种特定方式。 当事件发生在另一个元素内的元素内并且两个元素都为所述事件注册了句柄时,就会发生这种情况。 当涉及到冒泡时,最内部元素首先捕获的事件最终会传递给外部元素。

一旦从一个事件开始执行,它就会传到父元素。 之后,执行传递到父元素,并一直持续到 body 元素。

问题 35。 在 JavaScript 中,什么是 NaN?

NaN 代表非数字。 NaN 总是用于比较不等于任何数字,包括 NaN 本身。 因此,它通常用于为任何可以返回有效数字的函数显示错误条件。 例如,当将字符串转换为数字时,如果无法完成,则会出现 NaN。

问题 36。 JavaScript 原始/对象类型如何通过函数传递?

原始数据类型通过值传递,而对象通过引用传递。

  • 按价值表示,如果它是双胞胎,它会开发正版或原始 sd 的副本。
  • 通过引用意味着它创建了正版或原始的别名。 您可以将其与常见的昵称进行比较。

问题 37。 如何使用 JavaScript 将任何基数的字符串转换为整数?

通过使用 parseInt() 函数,您可以在不同的基数之间转换数字。

问题 38。 在 JavaScript 中,问题的结果是什么:2+5+“3”?

  1. 由于 2 和 5 是整数,因此将执行正常的加法。 然而,3 是一个字符串,因此会有连接。 “”代表一个字符串。

问题 39。 什么是进口和出口?

导入和导出对于编写模块化 JavaScript 代码很有用。 它可以进一步拆分为多个文件。

您已经掌握了一些棘手的 JavaScript 面试问题。 现在,是时候深入了解一些高级 JavaScript 面试问题和答案了。

Javascript 面试问题和答案 - 高级

Q40。 什么是所谓的严格模式以及如何启用它?

严格模式可帮助您检查代码中的错误。 当您使用严格模式时,您将不能使用隐式声明的变量,也不能将任何值分配给只读属性。

如果您想启用严格模式,您所要做的就是在程序、函数或文件的开头添加“use strict”。

问题 41。 在 JavaScript 中,提示框有什么用?

JavaScript 中的提示框帮助用户在文本框的帮助下进行输入。 prompt() 方法有助于显示提示访问者提供输入的对话框。

问题 42。 这段代码会产生什么结果:

变量 Y = 1;

如果(函数 F(){})

{

y += F 类型;</span>

}

控制台.log(y);

1undefined 将是输出。 这是因为 if 条件语句将使用 'eval' 进行评估,因此 eval(function f(){}) 将返回 function f(){} (true)。 因此,在这个 if 语句中,将执行 typeof f ,它会返回 undefined ,因为 if 语句代码是在运行时执行的。 因此,if 条件中存在的语句将在运行时进行评估。

问题 43。 说明 Apply 和 Call 之间的区别?

call() 方法有助于调用具有给定“this”值和单独提供的参数的函数。 语法是:

fun.call(thisArg[, arg1[, arg2[, …]]])

apply() 方法用于调用具有给定“this”值但参数以数组形式呈现的函数。 语法是:

fun.apply(thisArg, [argsArray])

Q44.在 JavaScript 中,如何清空一个数组?

有几种方法可以清空数组。 他们是:

方法一:

数组列表 = []

如果您没有对原始数组arrayList 的任何引用,建议使用此方法。 但是,如果您之前从不同的变量引用了此数组,则原始引用数组将保持不变。

方法二:

数组列表长度 = 0;

通过使用此代码,您将数组长度设置为 0,从而清空它的所有引用变量更新,返回到原始数组。

方法三:

arrayList.splice(0, arrayList.length);

此方法还可用于清空所有数组,包括将所有引用更新回原始数组。

方法四:

而(数组列表。长度)

{

数组列表.pop();

}

这也是清空数组的好方法,但不是推荐的方法。

问题 45。 此代码将呈现什么输出:

var 输出 = (函数(x)

{

删除 X;

返回 X;

}

)(0);

控制台.log(输出);

删除运算符有助于从对象中删除属性。 在此代码中,x 不是用作对象,而是用作局部变量。 删除运算符对局部变量没有任何影响。

问题 46。 此代码将呈现什么输出:

var X = { Foo : 1};

var 输出 = (函数()

{

删除 X.foo;

返回 X.foo;

}

)();

控制台.log(输出);

未定义的输出。 删除运算符有助于从对象中删除属性。 在此代码中,x 是一个对象,其属性 used 为 foo。 这是一个自调用函数,因此,可以从 x 对象中删除属性 foo。 因此,结果将是不确定的。

问题 47。 此代码将呈现什么输出:

var 员工 =

{

公司:'xyz'

}

var Emp1 = Object.create(employee);

删除 Emp1.company Console.log(emp1.company);

结果 = xyz。 在此代码中,emp1 对象使用 company 作为其原型属性。 Delete 运算符不会删除原型属性。 对象 emp1 没有 company 作为其属性。 可以使用 delete Employee.company 直接从 Employee 对象中删除公司属性。

问题 48。 此代码将呈现什么输出:

//nfe(命名函数表达式)

var Foo = 函数栏()

{

返回 7;

};

类型酒吧();

输出 = 参考误差。 函数定义只能有一个引用变量作为函数名。

问题 49。 为什么将 JavaScript 源文件的内容包装在函数书中很常见?

许多 JavaScript 库都使用这种技术。 它有助于围绕文件的内容开发一个闭包,这有助于创建一个私有命名空间,从而避免与不同的 JavaScript 模块和库发生任何名称冲突。

Q50。 在 JavaScript 中,什么是转义字符?

转义字符可帮助您编写特殊字符,而无需中断应用程序。

从世界顶级大学获得软件工程学位获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

这些是一些流行的 javascript 面试问题,以不同的难度提供,以帮助您在面试中脱颖而出。 使用这些 javascript 面试问题和答案来复习你的 JavaScript 基础和高级知识是在任何顶级科技公司担任开发人员的好方法。

有些人更喜欢 Web 开发的艺术方面,而另一些人则更喜欢技术方面。 但是还有第三类人都知道。 第一组是前端开发者,第二组是后端开发者,最后一组是全栈开发者。

对全栈开发人员的需求正在上升。 公司迫切需要能够同时使用 HTML 和 PHP 的有才华的专业人士。

如果您有兴趣了解有关全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目和任务, IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

什么是 JavaScript?

JavaScript 是一种轻量级的解释型编程语言,具有面向对象的能力。 它可以帮助您将交互性开发为静态 HTML 页面。

JavaScript 是否区分大小写?

是的,JavaScript 区分大小写。

JavaScript 中变量的作用域是什么?

全局变量:全局变量具有全局范围,这意味着它将在您的代码中随处可见。
局部变量:局部变量仅在定义它的函数中可见。