前 100 个 JavaScript 面试题及答案 (2025)

以下是针对初学者和有经验的候选人的 JavaScript 面试问题及答案,以帮助他们获得理想的工作。

 

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 代码,请执行以下操作:

在 `