前 100 个 JavaScript 面试题及答案 (2025)
JavaScript 初学者面试题
1. 什么是 JavaScript?
JavaScript 是一种非常强大的客户端脚本语言。JavaScript 主要用于增强用户与网页的交互性。换句话说,借助 JavaScript,您可以使您的网页更生动、更具交互性。JavaScript 也广泛用于游戏开发和移动应用程序开发。
👉 免费 PDF 下载:JavaScript 面试题及答案 >>
2. 列举 Java 和 JavaScript 之间的区别?
Java 是一种完整的编程语言。相比之下,JavaScript 是一种可以嵌入到 HTML 页面中的代码程序。这两种语言完全不相互依赖,并且是为不同的目的而设计的。Java 是一种面向对象的编程 (OOPS) 或结构化编程语言,如 C++ 或 C,而 JavaScript 是一种客户端脚本语言。
3. 什么是 JavaScript 数据类型?
以下是 JavaScript 数据类型
- 数字
- 字符串
- 布尔值
- 对象
- Undefined
4. isNaN 函数的用途是什么?
如果参数不是数字,isNaN 函数返回 true;否则返回 false。
5. JavaScript 和 ASP 脚本之间哪个更快?
JavaScript 更快。JavaScript 是一种客户端语言,因此它不需要服务器的协助来执行。另一方面,ASP 是一种服务器端语言,因此总是比 JavaScript 慢。JavaScript 现在也是一种服务器端语言(nodejs)。
6. 什么是负无穷大?
负无穷大是 JavaScript 中的一个数字,可以通过将负数除以零得到。
7. JavaScript 代码能否分成多行?
可以在字符串语句中使用反斜杠“\”在第一行末尾进行换行。
示例
document. Write ("This is \a program,");
如果您在字符串语句之外换行,JavaScript 会忽略换行。
示例
var x=1, y=2, z= x+y;
上面的代码是完全没问题的,但不推荐,因为它会影响调试。
8. 哪个公司开发了 JavaScript?
Netscape 是开发 JavaScript 的软件公司。
9. 什么是未声明和未定义变量?
未声明变量是指在程序中不存在且未声明的变量。如果程序尝试读取未声明变量的值,则会遇到运行时错误。
未定义变量是指在程序中已声明但未赋予任何值的变量。如果程序尝试读取未定义变量的值,则会返回未定义值。
10. 编写动态添加新元素的代码?
<html> <head> <title>t1</title> <script type="text/javascript"> function addNode () { var newP = document. createElement("p"); var textNode = document.createTextNode(" This is a new text node"); newP.appendChild(textNode); document.getElementById("firstP").appendChild(newP); } </script> </head> <body> <p id="firstP">firstP<p> </body> </html>
11. 什么是全局变量?这些变量如何声明?
全局变量在代码的整个长度中都可用,因此它没有作用域。var 关键字用于声明局部变量或对象。如果省略 var 关键字,则会声明一个全局变量。
示例
// 声明一个全局变量:globalVariable = “Test”;
使用全局变量的问题在于局部作用域和全局作用域的变量名冲突。此外,依赖于全局变量的代码很难调试和测试。
12. 什么是提示框?
提示框是一个框,允许用户通过提供文本框来输入。会提供一个标签和框来输入文本或数字。
13. JavaScript 中的 'this' 关键字是什么?
“this”关键字指向调用它的对象。
14. JavaScript 中计时器的作用是什么?
计时器用于在设定的时间执行一段代码或在给定间隔内重复代码。这是通过使用函数 **setTimeout、setInterval** 和 **clearInterval** 来完成的。
setTimeout(function, delay) 函数用于启动一个计时器,该计时器在指定的延迟后调用特定函数。setInterval(function, delay) 函数在指定的延迟内重复执行给定函数,直到取消才会停止。clearInterval(id) 函数指示计时器停止。
计时器在单个线程内运行,因此事件可能会排队等待执行。
15. JavaScript 中注释使用什么符号?
// 用于单行注释,
/* 多行
直线
注释
*/
16. ViewState 和 SessionState 有什么区别?
- “ViewState”特定于会话中的页面。
- “SessionState”特定于用户数据,可以跨所有 Web 应用程序页面访问。
17. === 运算符是什么?
=== 称为严格相等运算符,当两个操作数在没有转换的情况下具有相同的值时,它返回 true。
18. 如何使用 JavaScript 提交表单?
要使用 JavaScript 提交表单,请使用
document.form[0].submit(); document.form[0].submit();
19. JavaScript 支持自动类型转换吗?
是的,JavaScript 支持自动类型转换。这是 JavaScript 开发人员使用的常见类型转换方式。
20. 如何更改元素的样式/类?
可以按以下方式完成:
document.getElementById("myText"). style. fontSize = "20";
或
document. getElementById ("myText"). className = "anyclass";
21. 如何使用 JavaScript 读取和写入文件?
有两种方法可以使用 JavaScript 读取和写入文件:
- 使用 JavaScript 扩展
- 使用网页和 Active X 对象
22. JavaScript 中有哪些循环结构?
以下是 JavaScript 中的循环结构:
- For
- While
- Do-while 循环
23. JavaScript 中的变量类型称为什么?
变量类型用于将数字分配给变量。同一个变量也可以分配给字符串。
示例
i = 10; i = "string;"
这被称为变量类型。
24. 如何将任何进制的字符串转换为 JavaScript 中的整数?
parseInt() 函数用于转换不同进制的数字。parseInt() 将要转换的字符串作为第一个参数。第二个参数是给定字符串的进制。
要将 4F(或 16 进制)转换为整数,使用的代码将是:
parseInt ("4F", 16);
25. “==” 和 “===” 有什么区别?
“==” 只检查值是否相等,而“===”是更严格的相等测试,如果两个变量的值或类型不同,则返回 false。
JavaScript 有经验者面试题
26. 3+2+”7″ 的结果是什么?
由于 3 和 2 是整数,它们将按数值相加。由于 7 是字符串,因此会进行连接。所以结果是 57。
27. 如何检测客户端机器上的操作系统?
为了检测客户端机器上的操作系统,应该使用 navigator.platform 字符串(属性)。
28. JavaScript 中的 NULL 是什么意思?
NULL 值用于表示没有值或没有对象。它意味着没有对象或空字符串,没有有效的布尔值,没有数字,也没有数组对象。
29. delete 运算符的功能是什么?
delete 关键字用于删除属性及其值。
示例
var student= {age:20, batch:"ABC"}; Delete student. age;
30. JavaScript 中的未定义值是什么?
未定义值意味着
- 代码中使用的变量不存在
- 变量未分配任何值
- 属性不存在。
31. JavaScript 中有哪些类型的弹出框?
- Alert
- Confirm 和
- Prompt
32. void(0) 的用途是什么?
Void(0) 用于阻止页面刷新,并在调用时传递参数“zero”。
Void(0) 用于在不刷新页面的情况下调用其他方法。
33. 如何强制页面加载另一个页面(JavaScript)?
必须插入以下代码来实现所需的效果:
<script language="JavaScript" type="text/javascript" > <!-- location. href="https://guru99.com.cn/javascript-interview-questions-answers.html"; //--></script>
34. JavaScript 中变量的数据类型是什么?
JavaScript 中的所有变量都是对象数据类型。
35. alert 框和确认框有什么区别?
alert 框仅显示一个按钮,即 OK 按钮。
但确认框显示两个按钮,即 OK 和 cancel。
36. 什么是转义字符?
转义字符(反斜杠)在处理特殊字符(如单引号、双引号、撇号和和号)时使用。将反斜杠放在字符前面使其显示。
示例
document. write "I m a "good" boy." document. write "I m a \"good\" boy."
37. 什么是 JavaScript Cookie?
Cookie 是存储在计算机中的小型文本文件,当用户访问网站时创建它们以存储他们需要的信息。例如,以前访问过的用户名详细信息和购物车信息。
38. JavaScript 中的 pop() 方法是什么?
pop() 方法类似于 shift() 方法,但区别在于 Shift 方法在数组的开头操作。pop() 方法移除给定数组的最后一个元素并返回它。对其调用操作的数组将被修改。
示例
var cloths = ["Shirt", "Pant", "TShirt"]; cloths.pop(); //Now cloth becomes Shirt,Pant
39. JavaScript 中有作用域概念吗?
否。JavaScript 没有概念作用域。在函数内部声明的变量的作用域在函数内部。
40. 使用 innerHTML 的缺点是什么?
如果您在 JavaScript 中使用 innerHTML,缺点是:
- 内容在所有地方都被替换
- 我们不能像“追加到 innerHTML”那样使用它
- 即使您使用 += 像“innerHTML = innerHTML + ‘html’”那样,旧内容仍然被 html 替换。
- 整个 innerHTML 内容会被重新解析并构建成元素。因此,它的速度要慢得多。
- innerHTML 不提供验证,因此我们可能会在文档中插入有效和无效的 HTML 并破坏它。
41. break 和 continue 语句是什么?
Break 语句退出当前循环。
Continue 语句继续循环的下一个语句。
42. JavaScript 中有哪些两种基本数据类型?
- 它们是:原始类型
- 引用类型
原始类型是数字和布尔数据类型。引用类型是更复杂的数据类型,如字符串和日期。
43. 如何创建通用对象?
通用对象可以创建为:
var I = new object();
44. typeof 运算符的用途是什么?
‘typeof’ 是一个运算符,用于返回变量类型的字符串描述。
45. 使用哪些关键字来处理异常?
Try… Catch—finally 用于在 JavaScript 中处理异常。
Try{ Code } Catch(exp){ Code to throw an exception. } Finally{ Code runs either it finishes successfully or after catch }
46. 使用哪个关键字在屏幕上打印文本?
Document. Write (“Welcome”) 用于在屏幕上打印文本“Welcome”。
47. blur 函数的用途是什么?
Blur 函数用于从指定对象中移除焦点。
48. 什么是变量类型?
变量类型将一个数字分配给一个变量,然后将一个字符串分配给同一个变量。例如:
i= 8; i="john";
49. 如何使用 JavaScript 查找客户端机器上的操作系统?
“Navigator.appVersion”用于查找客户端机器上的操作系统名称。
50. JavaScript 中有哪些不同类型的错误?
有三种类型的错误:
- 加载时错误:加载网页时出现的错误,如语法错误不正确,称为加载时错误,它们会动态生成错误。
- 运行时错误:由于在 HTML 语言中误用命令而导致的错误。
- 逻辑错误:这些错误是由于对函数执行了错误的逻辑而导致的,函数执行了不同的操作。
JavaScript 五年经验面试题
51. JavaScript 中 Push 方法的用途是什么?
push 方法用于将一个或多个元素添加到数组末尾。使用此方法,我们可以通过传递多个参数来添加多个元素。
52. JavaScript 中 unshift 方法是什么?
Unshift 方法类似于 push 方法,它在数组的开头操作。此方法用于在数组的开头预置一个或多个元素。
53. JavaScript 和 Jscript 有什么区别?
两者几乎相似。Netscape 开发了 JavaScript,而 Microsoft 开发了 Jscript。
54. 如何分配对象属性?
对象属性的分配方式如下:
obj ["class"] = 12; or obj.class = 12;
55. JavaScript 中的“Strict Mode”是什么?如何启用它?
Strict Mode 为 JavaScript 增加了某些强制性要求。在 Strict Mode 下,JavaScript 会对以前未显示错误但可能存在问题且不安全的代码显示错误。Strict Mode 还解决了阻碍 JavaScript 引擎高效运行的一些错误。
可以通过在文件上方添加字符串字面量“use strict”来启用严格模式。这可以通过给定的示例来说明:
function myfunction() { "use strict;" var v = "This is a strict mode function"; }
56. 如何获取 CheckBox 的状态?
可以通过以下方式获取状态:
alert(document.getElementById('checkbox1').checked);
如果选中了 CheckBox,此警报将返回 TRUE。
57. 如何检测客户端机器的操作系统?
可以使用 navigator.appVersion 字符串来检测客户端机器上的操作系统。
58. 什么是 window.onload 和 onDocumentReady?
onload 函数在页面上的所有信息加载完成后才会运行。这会导致在执行任何代码之前出现显著延迟。
onDocumentReady 在 DOM 加载后立即加载代码。这允许对代码进行早期操作。
59. JavaScript 中的闭包如何工作?
闭包是与函数相关的本地声明变量,当函数返回后,它仍然保留在内存中。
例如
function greet(message) { console.log(message); } function greeter(name, age) { return name + " says howdy!! He is " + age + " years old"; } // Generate the message var message = greeter("James", 23); // Pass it explicitly to greet greet(message); This function can be better represented by using closures function greeter(name, age) { var message = name + " says howdy!! He is " + age + " years old"; return function greet() { console.log(message); }; } // Generate the closure var JamesGreeter = greeter("James", 23); // Use the closure JamesGreeter();
60. 如何将值添加到数组?
可以通过以下方式将值添加到数组:
arr[arr.length] = value;
61. JavaScript 中的 for-in 循环是什么?
for-in 循环用于遍历对象的属性。
for-in 循环的语法是:
for (variable name in object){ statement or block to execute }
在每次重复中,对象的一个属性与变量名关联。循环一直持续到对象的所有属性都被耗尽。
62. JavaScript 中匿名函数的重要属性是什么?
没有命名标识符的函数称为匿名函数。通常,匿名函数在声明后是不可访问的。
匿名函数声明:
var anon = function() { alert('I am anonymous'); }; anon();
63. .call() 和 .apply() 有什么区别?
函数 .call() 和 .apply() 的用法非常相似,除了一个细微的差别。当程序员知道函数的参数数量时,就使用 .call(),因为它们必须在调用语句中作为参数提及。另一方面,当不知道数量时,则使用 .apply()。函数 .apply() 期望参数是一个数组。
.call() 和 .apply() 之间的基本区别在于传递参数给函数的方式。它们的用法可以通过给定的示例来说明。
var someObject = { myProperty : 'Foo', myMethod : function(prefix, postfix) { alert(prefix + this.myProperty + postfix); } }; someObject.myMethod('<', '>'); // alerts '<Foo>' var someOtherObject = { myProperty : 'Bar.' }; someObject.myMethod.call(someOtherObject, '<', '>'); // alerts '<Bar>' someObject.myMethod.apply(someOtherObject, ['<', '>']); // alerts '<Bar>'
64. 什么是事件冒泡?
JavaScript 允许 DOM 元素嵌套在一起。在这种情况下,如果单击子元素的处理程序,父元素的处理程序也会起作用,就好像它也被单击了一样。
65. JavaScript 区分大小写吗?举例说明。
是的,JavaScript 区分大小写。例如,parseInt 函数与 Parseint 函数不同。
66. JavaScript 中可以使用哪些布尔运算符?
JavaScript 中可以使用“And”运算符(&&)、“Or”运算符(||)和“Not”运算符(!)。
*运算符不带括号。
67. 如何使用 JavaScript 从超链接定位特定框架?
可以通过在超链接中使用“target”属性包含所需框架的名称来完成此操作。
<a href="/newpage.htm" target="newframe">>New Page</a>
68. break 和 continue 语句的作用是什么?
break 语句用于退出当前循环。相比之下,continue 语句会以新的迭代继续当前循环。
69. 写出 web garden 和 web farm 的区别?
Web-garden 和 web-farm 都是 Web 托管系统。唯一的区别是 web-garden 是一个包含单个服务器中多个处理器的设置。同时,web-farm 是一个更大的设置,使用一个以上的服务器。
70. 如何分配对象属性?
将属性分配给对象的方式与将值分配给变量的方式相同。例如,表单对象的 action 值如下分配为“submit”:Document.form.action=”submit”
71. 在 JavaScript 中读写文件的常用方法是什么?
可以通过使用 JavaScript 扩展(从 JavaScript Editor 运行)来完成此操作,例如,打开文件:
fh = fopen(getScriptPath(), 0);
72. JavaScript 中如何使用 DOM?
DOM 代表文档对象模型,负责文档中各种对象如何相互交互。DOM 对于开发网页至关重要,包括段落、链接等对象。这些对象可以被操作以包含添加或删除等操作。DOM 也需要为网页添加额外的功能。最重要的是,API 的使用比其他现有模型具有优势。
73. JavaScript 中如何利用事件处理器?
事件是由用户单击链接或填写表单等活动引起的动作。事件处理器对于管理所有这些事件的正确执行是必需的。事件处理器是对象的附加属性。此属性包括事件的名称以及事件发生时要采取的操作。
74. JavaScript 中延迟脚本的作用是什么?
在页面加载期间,HTML 代码的解析默认会暂停,直到脚本执行完毕。如果服务器速度慢或脚本特别重,则会延迟 Web 页面的加载。
使用 Deferred 时,脚本会将脚本的执行延迟到 HTML 解析器运行的时候。这减少了网页的加载时间,并使它们更快地显示。
75. JavaScript 中有哪些不同的函数式组件?
JavaScript 的不同函数式组件是:
- 一等函数: JavaScript 中的函数被用作一等对象。这通常意味着这些函数可以作为参数传递给其他函数,作为其他函数的值返回,分配给变量,或者也可以存储在数据结构中。
- 嵌套函数: 定义在其他函数内部的函数称为嵌套函数。它们在主函数被调用时被调用。
76. 描述 JavaScript 中显示的错误?
JavaScript 会在遇到错误时显示一条消息。已识别的错误包括:
- 加载时错误: 在页面加载时显示的错误属于加载时错误。不正确语法的出现会导致这些错误,因此在页面加载时会被检测到。
- 运行时错误: 这是程序运行时出现的错误。例如,非法操作会导致除以零或访问内存中不存在的区域。
- 逻辑错误: 这是由语法正确的代码引起的,但这些代码未能完成所需的任务,例如无限循环。
77. 什么是屏幕对象?
屏幕对象用于读取客户端屏幕的信息。屏幕对象的属性是:
- AvailHeight:提供客户端屏幕的高度。
- AvailWidth:提供客户端屏幕的宽度。
- ColorDepth:提供客户端屏幕上图像的位深度。
- Height:提供客户端屏幕的总高度,包括任务栏。
- Width:提供客户端屏幕的总宽度,包括任务栏。
78. 什么是 unshift() 方法?
此方法在数组的开头操作,与 push() 不同。它将所需数量的元素添加到数组的顶部。例如:
var name = [ "john" ]; name.unshift( "charlie" ); name.unshift( "joseph", "Jane" ); console.log(name);
输出如下:
[" joseph ,"," Jane ,", " charlie ", " john "]
79. 什么是 unescape() 和 escape() 函数?
escape() 函数负责对字符串进行编码,以便在网络上传输信息。
例如
<script> document.write(escape("Hello? How are you!")); </script>
输出: Hello%3F%20How%20are%20you%21
unescape() 函数非常重要,因为它会解码编码的字符串。
它的工作方式如下。例如:
<script> document.write(unescape("Hello%3F%20How%20are%20you%21")); </script>
输出: Hello? How are you!
80. 什么是 decodeURI() 和 encodeURI()?
EncodeURl() 用于将 URL 转换为其十六进制编码。DecodeURI() 用于将编码的 URL 转换回正常。
<script> var uri="my test.asp?name=ståle&car=saab"; document.write(encodeURI(uri)+ "<br>"); document.write(decodeURI(uri)); </script>
输出:
my%20test.asp?name=st%C3%A5le&car=saab
my test.asp?name=ståle&car=saab
JavaScript 十年以上经验面试题
81. 为什么不应该在 JavaScript 中使用 innerHTML?
innerHTML 内容每次都会被刷新,因此速度较慢。innerHTML 没有验证范围。因此,很容易在文档中插入恶意代码并破坏网页的稳定性。
82. 以下语句声明了什么?
var myArray = [[[]]];
它声明了一个三维数组。
83. JavaScript 和 ECMA Script 是如何关联的?
ECMA Script 就像规则和指南,而 JavaScript 是一种用于 Web 开发的脚本语言。
84. JavaScript 中的命名空间是什么?如何使用它?
命名空间用于将所需的函数、变量等分组到一个唯一的名称下。它是附加到所需函数、对象和属性的名称。这提高了代码的可重用性,并实现了代码的重用。
85. 如何隐藏 JavaScript 代码,使其不被不支持 JavaScript 的旧浏览器识别?
要隐藏 JavaScript 代码,请执行以下操作:
在 `