JavaScript面试题及答案

14 2025月 | 阅读21分钟
JavaScript Interview Questions

JavaScript面试题及答案提供了一份包含20个顶级面试题的列表。下面是经常被问到的JavaScript面试题及答案,适用于初学者和专业人士。

1) 什么是JavaScript?

JavaScript 是一种脚本语言。它与Java语言不同。它是一种面向对象、轻量级、跨平台的翻译语言。它广泛用于客户端验证。JavaScript解释器(嵌入在浏览器中)负责将JavaScript代码翻译给Web浏览器。更多详情。

阅读更多:JavaScript教程


2) 列出JavaScript的一些特性。

JavaScript的一些特性包括:

  • 轻量级
  • 解释型编程语言
  • 对网络中心型应用程序有益
  • 与Java互补
  • 与HTML互补
  • 开源
  • 跨平台

阅读更多:JavaScript的特性


3) 谁开发了JavaScript,JavaScript的第一个名字是什么?

JavaScript由Netscape程序员Brendan Eich开发。Brendan Eich在1995年9月仅用了十天时间就开发出了这种新的脚本语言。在其发布时,JavaScript最初被称为Mocha。之后,它被称为Live Script,后来才以JavaScript闻名。

阅读更多:谁创造了JavaScript


4) 列出JavaScript的一些优点。

JavaScript的一些优点包括:

  • 服务器交互较少
  • 对访问者的反馈即时
  • 高交互性
  • 更丰富的界面

5) 列出JavaScript的一些缺点。

JavaScript的一些缺点包括:

  • 不支持多线程
  • 不支持多进程
  • 不允许读写文件
  • 不支持网络应用程序。

6) 在JavaScript中定义一个命名函数。

在定义时具有名称的函数称为命名函数。例如:

阅读更多:如何在JavaScript中编写函数


7) 说出函数的类型

函数的类型有:

  • 命名函数 - 这类函数在定义时就带有名称。例如:
  • 匿名函数 - 这类函数没有名称。它们在运行时动态声明。

阅读更多:JavaScript函数


8) 定义匿名函数

它是一个没有名称的函数。这些函数不是通过函数声明,而是使用函数运算符在运行时动态声明的。函数运算符比函数声明更灵活。它可以轻松地用作表达式。例如:

阅读更多:JavaScript中的匿名函数


9) 匿名函数可以赋值给变量吗?

是的,您可以将匿名函数赋值给变量。


10) 在JavaScript中,arguments对象是什么?

JavaScript的arguments变量表示传递给函数的参数。


11) 定义闭包。

在JavaScript中,当一个定义在作用域之外的变量被某个内部作用域引用时,我们就需要闭包。


12) 如果我们想从特定索引返回字符,使用哪种方法?

JavaScript的字符串charAt()方法用于查找指定索引处的字符值。索引号从0开始,到n-1结束,其中n是字符串的长度。索引值不能为负数,也不能大于或等于字符串的长度。例如:


13) JavaScript和JScript有什么区别?

Netscape提供了JavaScript语言。微软为了避免商标问题,更改了名称并将其称为JScript。换句话说,JScript与JavaScript相同,但由微软提供。


14) 如何编写一个JavaScript的hello world示例?

下面是一个简单的JavaScript hello world示例。您需要将其放在HTML的body标签内。

阅读更多:JavaScript的Hello World程序


15) Java和JavaScript之间有什么主要区别?/ JavaScript与Java有何不同?

JavaScript是由Netscape公司开发的轻量级编程语言(最常被称为脚本语言)。它用于使网页具有交互性。它不是Java平台的一部分。以下是Java和JavaScript之间一些主要区别的列表:

Java和JavaScript之间的主要区别列表

JavaJavaScript
Java是一种完整且强类型的编程语言,用于后端编码。在Java中,必须先声明变量才能在程序中使用,并且变量的类型在编译时进行检查。JavaScript是一种弱类型、轻量级的编程语言(最常被称为脚本语言),并且具有更宽松的语法和规则。
Java是一种面向对象的编程(OOPS)语言或结构化编程语言,如C、C++或.Net。JavaScript是一种客户端脚本语言,它不支持完全的OOPS概念。它驻留在HTML文档中,用于使网页具有交互性(简单的HTML无法实现)。
Java创建的应用程序可以在任何虚拟机(JVM)或浏览器中运行。JavaScript代码只能在浏览器中运行,但现在可以通过Node.js在服务器上运行。
Java代码需要编译。JavaScript代码无需编译。
Java对象是基于类的。没有类就无法在Java中创建程序。JavaScript对象是基于原型的。
Java是一种完整且独立的语言,可用于后端编码。JavaScript嵌入在网页中,并与HTML内容集成。
Java程序占用更多内存。JavaScript代码用于HTML网页,占用内存较少。
Java程序的扩展名为“.Java”,它将源代码翻译成字节码,然后由JVM(Java虚拟机)执行。JavaScript的文件扩展名为“.js”,它是被解释执行的,而不是编译。每个浏览器都有一个JavaScript解释器来执行JS代码。
Java支持多线程。JavaScript不支持多线程。
Java使用基于线程的方法进行并发。JavaScript使用基于事件的方法进行并发。

阅读更多:Java和JavaScript的区别


16) 如何使用外部JavaScript文件?

假设js文件名为message.js,将以下script标签放在head标签内。

阅读更多:外部JavaScript


17) JavaScript是区分大小写的语言吗?

是的,JavaScript是一种区分大小写的语言。例如:

阅读更多:JavaScript是否区分大小写


18) 什么是BOM?

BOM浏览器对象模型的缩写。它提供了与浏览器的交互。浏览器的默认对象是window。因此,您可以指定window或直接调用window的所有函数。window对象提供了各种属性,如document、history、screen、navigator、location、innerHeight、innerWidth。

javascript object model

阅读更多:BOM(浏览器对象模型)


19) 什么是DOM?document对象有什么用?

DOM文档对象模型的缩写。document对象代表HTML文档。它可以用于访问和更改HTML的内容。

阅读更多:DOM(文档对象模型)


20) window对象有什么用?

window对象由浏览器自动创建,代表一个浏览器窗口。它不是JavaScript的对象。它是一个浏览器对象。

window对象用于显示弹出对话框。让我们通过描述来看一下。

方法描述
alert()显示包含消息和“确定”按钮的警告框。
confirm()显示包含消息以及“确定”和“取消”按钮的确认对话框。
prompt()显示一个对话框以获取用户输入。
open()打开新窗口。
close()关闭当前窗口。
setTimeout()在指定时间后执行操作,例如调用函数、评估表达式。

阅读更多:JavaScript Window对象


21) history对象有什么用?

浏览器history对象可用于在历史页面之间切换,例如从当前页面或另一页面后退和前进。history对象有三种方法:

  1. history.back() - 加载上一页。
  2. history.forward() - 加载下一页。
  3. history.go(number) - number可以是正数表示前进,负数表示后退。它加载指定的页面编号。

阅读更多:JavaScript History对象


22) 如何在JavaScript中编写注释?

JavaScript有两种类型的注释:

  1. 单行注释:用//(双斜杠)表示。
  2. 多行注释:用/*在此处写注释*/表示。

阅读更多:JavaScript注释


23) 如何在JavaScript中创建函数?

要创建JavaScript函数,请遵循以下语法。

阅读更多:JavaScript函数


24) JavaScript中有哪些不同的数据类型?

JavaScript有两种数据类型:

  • 原始数据类型
  • 非原始数据类型

原始数据类型

原始数据类型如下:

String: String数据类型表示字符序列。它用引号括起来,可以用单引号或双引号表示。

示例

Number: Number数据类型用于表示数值,可以带小数点或不带小数点。

示例

Boolean: Boolean数据类型用于表示布尔值,即false或true。这种数据类型通常用于条件测试。

示例

BigInt: BigInt数据类型用于存储超出Number数据类型限制的数字。这种数据类型可以存储大整数,通过在整数文字后面添加“n”来表示。

示例

Undefined: Undefined数据类型用于声明了一个变量但未赋值的情况。此数据类型的值为undefined,类型也为undefined。

示例

Null: Null数据类型用于表示不存在的、null的或无效的值,即没有任何值。

示例

Symbol: Symbol是ES6版本的JavaScript中引入的一种新数据类型。它用于存储匿名且唯一的值。

示例

typeof: typeof运算符用于确定变量或操作数包含什么类型的数据。它可以带括号或不带括号使用(typeof(x)或typeof x)。这主要用于需要处理不同类型的值的情况。

示例

非原始数据类型

在上面的示例中,我们可以看到原始数据类型只能存储单个值。要存储多个复杂值,我们必须使用非原始数据类型。

非原始数据类型如下:

Object: Object是一种非原始数据类型。它用于存储数据集合。对象包含属性,定义为键值对。属性键(名称)始终是字符串,但值可以是任何数据类型,例如字符串、数字、布尔值或像数组、函数和其他对象这样的复杂数据类型。

示例

Array: Array数据类型用于表示一组相似的值。数组中的每个值都有一个数字位置,称为索引,它可以包含任何数据类型的元素:数字、字符串、布尔值、函数、对象,甚至其他数组。数组索引从0开始,因此第一个数组元素是arr[0],而不是arr[1]。

示例

阅读更多:JavaScript数据类型


25) == 和 === 有什么区别?

==运算符只检查相等性,而===运算符则同时检查相等性和数据类型,即值必须是相同的类型。

阅读更多:如何在JavaScript中比较对象


26) 如何使用JavaScript动态编写HTML代码?

innerHTML属性用于动态地使用JavaScript编写HTML代码。让我们看一个简单的例子:

阅读更多:JavaScript innerHTML


27) 如何使用JavaScript动态编写普通文本代码?

innerText属性用于动态地使用JavaScript编写纯文本。让我们看一个简单的例子:

阅读更多:JavaScript innerText


28) 如何在JavaScript中创建对象?

有3种在JavaScript中创建对象的方法。

  1. 通过对象字面量
  2. 通过创建Object实例
  3. 通过对象构造函数

让我们看一个使用对象字面量创建对象的简单代码。

阅读更多:JavaScript对象


29) 如何在JavaScript中创建数组?

有3种在JavaScript中创建数组的方法。

  1. 通过数组字面量
  2. 通过创建Array实例
  3. 通过使用Array构造函数

让我们看一个使用对象字面量创建数组的简单代码。

阅读更多:JavaScript数组


30) isNaN()函数的作用是什么?

如果变量值不是数字,isNaN()函数将返回true。例如:

阅读更多:JavaScript NaN函数


31) JavaScript中 10+20+"30" 的输出是什么?

3030,因为10+20将得到30。如果“+”前后都有数字值,它将被视为二元“+”(算术运算符)。


32) JavaScript中 "10"+20+30 的输出是什么?

102030,因为字符串后面的所有“+”都将被视为字符串连接运算符(而不是二元“+”)。


33) 客户端JavaScript和服务器端JavaScript的区别?

客户端JavaScript包括基本语言和预定义对象,这些对象与在浏览器中运行JavaScript相关。客户端JavaScript直接嵌入在HTML页面中。浏览器在运行时解释此脚本。

服务器端JavaScript也类似于客户端JavaScript。它有一个相关的JavaScript,用于在服务器上运行。服务器端JavaScript仅在编译后部署。

阅读更多:服务器端脚本与客户端脚本的区别


34) Cookie存储在硬盘的哪个位置?

Cookie在硬盘上的存储取决于操作系统和浏览器。

Windows上的Netscape Navigator使用一个名为cookies.txt的文件,其中包含所有Cookie。路径是:c:\Program Files\Netscape\Users\username\cookies.txt

Internet Explorer将Cookie存储在名为[email protected]的文件中。路径是:c:\Windows\Cookies\[email protected]


35) JavaScript中的event.preventDefault()和event.stopPropagation()方法有什么区别?

在JavaScript中,event.preventDefault()方法用于阻止元素的默认行为。

例如: 如果您在表单元素中使用它,它将阻止表单提交。如果用于锚点元素,它将阻止其导航。如果用于上下文菜单,它将阻止其显示。

另一方面,event.stopPropagation()方法用于停止事件的传播或阻止事件在冒泡或捕获阶段发生。

阅读更多:preventDefault()和stopPropagation()方法之间的区别


36) JavaScript的真实名称是什么?

最初的名字是Mocha,由Netscape创始人Marc Andreessen选择。1995年9月,名称改为LiveScript。1995年12月,在获得Sun公司的商标许可后,采用了JavaScript这个名称。


37) 如何检查元素上是否使用了event.preventDefault()方法?

当我们在事件对象中使用event.defaultPrevent()方法时,它会返回一个布尔值,指示event.preventDefault()是否在特定元素上调用。

阅读更多:jQuery event.preventDefault()方法


38) undefined值和null值有什么区别?

Undefined值: 未定义且没有关键字的值称为undefined值。例如:

Null值: 用关键字“null”显式指定的值称为null值。例如:

阅读更多:Null和Undefined的区别


39) 如何在JavaScript中将光标设置为等待状态?

可以通过使用“cursor”属性在JavaScript中将光标设置为等待状态。以下示例说明了其用法:


40) [[[]]]是什么?

这是一个三维数组。


41) Java和JavaScript是相同的吗?

不,Java和JavaScript是两种不同的语言。Java是一种强大、安全且面向对象的编程语言,而JavaScript是一种具有一定限制的客户端脚本语言。

阅读更多:Java vs JavaScript


42) 什么是负无穷?

负无穷是JavaScript中的一个数字,可以通过将负数除以零得出。例如:


43) View state和Session state的区别是什么?

"View state"特定于会话中的一个页面,而"Session state"特定于用户或浏览器,可以跨Web应用程序的所有页面访问。


44) JavaScript中有哪些弹出框可用?

  • Alert Box(警告框)
  • Confirm Box(确认框)
  • Prompt Box(提示框)

JavaScript中alert()的示例

阅读更多:JavaScript alert()

JavaScript中confirm()的示例

阅读更多:JavaScript Confirm

JavaScript中prompt()的示例

阅读更多:JavaScript prompt()对话框


45) 如何使用JavaScript检测客户端机器的操作系统?

可以使用navigator.appVersion字符串来检测客户端机器上的操作系统。


46) 如何通过单击链接来使用JavaScript提交表单?

让我们看一下通过单击链接来提交表单的JavaScript代码。

阅读更多:如何通过JavaScript单击链接


47) JavaScript比ASP脚本快吗?

是的,因为它不需要Web服务器支持即可执行。


48) 如何使用JavaScript更改HTML文档的背景颜色?


49) 如何在JavaScript中处理异常?

借助try/catch块,我们可以在JavaScript中处理异常。JavaScript支持try、catch、finally和throw关键字进行异常处理。

阅读更多:JavaScript异常处理


50) 如何验证JavaScript表单?

阅读更多:JavaScript表单验证


51) 如何在JavaScript中验证电子邮件?

阅读更多:JavaScript电子邮件验证


52) JavaScript中的this关键字是什么?

this关键字是一个引用变量,它引用当前对象。例如:

阅读更多:JavaScript this关键字


53) JavaScript调试的必要性是什么?

JavaScript在浏览器中不显示任何错误消息。但是,这些错误会影响输出。找出错误的最佳方法是调试代码。可以使用Google Chrome、Mozilla Firefox等Web浏览器轻松调试代码。

要执行调试,我们可以使用以下任何方法:

  • 使用console.log()方法
  • 使用debugger关键字

阅读更多:JavaScript调试


54) debugger关键字在JavaScript中有何作用?

JavaScript debugger关键字通过代码本身设置断点。debugger会停止在应用位置处的程序执行。现在,我们可以手动开始执行流程。如果发生异常,执行将再次在该特定行停止。例如:

阅读更多:如何调试JavaScript


55) strict mode在JavaScript中的作用是什么?

JavaScript strict mode用于生成静默错误。它提供了“use strict”;表达式来启用strict mode。此表达式只能作为脚本或函数的第一个语句放置。例如:

阅读更多:JavaScript Strict Mode


57) Math对象在JavaScript中有何作用?

JavaScript的math对象提供了多个常量和方法来执行数学运算。与date对象不同,它没有构造函数。例如:

阅读更多:JavaScript Math


58) Date对象在JavaScript中有何作用?

JavaScript的date对象可用于获取年份、月份和日期。您可以通过JavaScript date对象在网页上显示计时器。

阅读更多:JavaScript Date对象


59) Number对象在JavaScript中有何作用?

JavaScript的number对象使您能够表示数值。它可以是整数或浮点数。JavaScript的number对象遵循IEEE标准来表示浮点数。

阅读更多:JavaScript Number对象


60) Boolean对象在JavaScript中有何作用?

JavaScript的Boolean是一个对象,它表示两种状态的值:true或false。您可以通过Boolean()构造函数创建JavaScript Boolean对象。

阅读更多:JavaScript Boolean


61) TypedArray对象在JavaScript中有何作用?

JavaScript的TypedArray对象说明了对底层二进制数据缓冲区的类数组视图。存在各种不同的全局属性,其值是特定元素类型的TypedArray构造函数。

阅读更多:JavaScript TypedArray


62) Set对象在JavaScript中有何作用?

JavaScript的Set对象用于存储具有唯一值的元素。值可以是任何类型,即原始值或对象引用。例如:

阅读更多:JavaScript Set


63) WeakSet对象在JavaScript中有何作用?

JavaScript的WeakSet对象是一种集合类型,它允许我们存储弱引用的对象。与Set不同,WeakSet仅包含对象。它不包含任意值。例如:

阅读更多:JavaScript WeakSet对象


64) Map对象在JavaScript中有何作用?

JavaScript的Map对象用于将键映射到值。它将每个元素存储为键值对。它基于指定的键对元素进行搜索、更新和删除等操作。例如:

阅读更多:JavaScript Map


65) WeakMap对象在JavaScript中有何作用?

JavaScript的WeakMap对象是一种集合类型,它几乎与Map相似。它将每个元素存储为键值对,其中键是弱引用的。这里,键是对象,值是任意值。例如:

阅读更多:JavaScript WeakMap对象


66) JavaScript中的falsy值有哪些?如何检查一个值是否为falsy?

转换为布尔值时变为false的值称为falsy值。

我们可以使用Boolean函数或双非运算符(!!)来检查一个值是否为falsy。


67) 你对JavaScript中的hoisting有什么理解?

Hoisting是JavaScript的默认行为,即将所有变量和函数声明移到顶部。简单来说,我们可以说Hoisting是一个过程,在这个过程中,无论变量和函数在哪里声明,它们都会被移动到作用域的顶部。作用域可以是本地的,也可以是全局的。

示例 1

示例 2

阅读更多:JavaScript Hoisting


JavaScript 多选题

1) 以下哪个陈述是正确的?

  1. 如果onKeyDown返回false,则取消keyup事件。
  2. 如果onKeyDown返回false,则取消keypress事件。
  3. 如果onKeyPress返回false,则取消keydown事件。
  4. 如果onKeyPress返回false,则取消keyup事件。
 

答案: B 是正确选项。

2) 以下哪个陈述显示了JavaScript和Java之间的主要区别?

  1. JavaScript和Java之间没有区别。
  2. 函数被视为字段。
  3. 变量是特定的。
  4. 函数是值,方法和字段之间没有区别。
 

答案: D是正确选项。我们知道Java是一种OOP语言,而JavaScript是一种OOP脚本语言。JavaScript和Java之间最根本的区别在于函数是值,并且方法和字段之间没有区别。

3) 以下哪个语法用于创建RegExp对象是有效的?

  1. 只有1种语法
  2. 只有2种语法
  3. 1和2种语法都有效
  4. 以上都不是
 

答案: C:这两种陈述都是正确的,并且可以用于创建RegExp对象。

4) 以下哪个陈述指出了“Augmenting classes”的含义?

  1. 即使在动态状态下,对象也会继承原型属性。
  2. 对象仅在动态状态下继承原型属性。
  3. 对象在静态状态下继承原型属性。
  4. 对象在静态状态下不继承原型属性。
 

答案: A:“即使在动态状态下,对象也会继承原型属性”是正确答案。

5) 如果para1是段落的DOM对象,则以下哪个是更改段落内文本的正确语法?

  1. para1="新文本"
  2. firstChild.nodeValue = "新文本";
  3. value="新文本";
  4. nodeValue="新文本";
 

答案: C:“para1.value = "新文本";”是更改段落内文本的正确语法。

6) 在方法中,以下哪个用于定义类实例的行为?

  1. 方法
  2. 接口
  3. 类和接口
 

答案: B:“类”是正确答案。类的行为由类定义,并被所有实例共享。

7) 如果JSON()方法的属性,以下哪个陈述是正确的?

  1. JSON()方法可以手动调用为object.JSON()
  2. JSON()方法由JSON.stringify()方法自动调用
  3. JSON()方法由编译器自动调用。
  4. JSON()方法无法以任何形式调用。
 

答案: B是正确选项。JSON()方法最常用于与Web服务器进行数据交换。当我们向Web服务器发送数据时,数据必须是字符串。在这种情况下,json.strigify()用于将JavaScript对象转换为字符串。

8) 如果类B可以扩展另一个类A,以下哪个陈述是正确的?

  1. A是超类,B是子类。
  2. B是超类,A是子类。
  3. A和B都是超类。
  4. A和B都是子类。
 

答案: A:“A是超类,B是子类”是正确答案。如果一个类可以定义一个子类,则该类称为超类。子类也称为超类的扩展。

9) 以下哪个是eval()函数的正确语法?

  1. [objectName.]eval(numeric)
  2. [EvalName.]eval(string)
  3. [EvalName.]eval(numeric)
  4. [objectName.]eval(string)
 

答案: D是正确选项。eval()函数用于评估或执行参数。如果参数是表达式,则eval()函数评估该表达式。如果参数是一个或多个JavaScript语句,则eval()函数执行这些语句。

10) 以下JavaScript代码的输出是什么?

  1. 10, 12
  2. 11, 12
  3. 未定义
  4. Error
 

答案: B:11, 12是正确答案。Object.assign()方法用于将一个对象的属性和值复制到另一个对象。


其他面试题

核心Java面试题
Servlet面试题
JSP面试题
SQL面试题
PL/SQL 面试问题
Android 面试问题