当前位置:实例文章 » HTML/CSS实例» [文章]43道JavaScript面试题

43道JavaScript面试题

发布人:shili8 发布时间:2024-05-13 17:43 阅读次数:18

当准备面试时,掌握JavaScript是至关重要的。在这篇文章中,我将分享43个常见的JavaScript面试题,每个问题都伴随着解答和相应的代码示例以及注释,帮助你更好地理解每个问题的解决思路。让我们开始吧!

###1. JavaScript 数据类型####1.1什么是 JavaScript 的基本数据类型?

JavaScript有7种基本数据类型,包括:Undefined、Null、Boolean、Number、String、Symbol、BigInt。

javascript//举例let num =10; // Numberlet str = "Hello"; // Stringlet bool = true; // Booleanlet n = null; // Nulllet undef; // Undefinedlet sym = Symbol("symbol"); // Symbollet bigInt =1234567890123456789012345678901234567890n; // BigInt


####1.2 JavaScript 中的什么是原始值?

原始值是不可变的值,包括 Undefined、Null、Boolean、Number、String、Symbol 和 BigInt。

###2. 变量和作用域####2.1 解释 JavaScript 中的变量提升是什么?

变量提升是指在JavaScript代码执行之前,变量的声明会被提升到当前作用域的顶部。但是,赋值操作不会提升。

javascriptconsole.log(x); // 输出:undefinedvar x =5;


等同于:

javascriptvar x;
console.log(x); // 输出:undefinedx =5;


####2.2什么是全局作用域和局部作用域?

全局作用域是在代码中任何地方都可以访问的作用域,而局部作用域是定义在函数内部的作用域,只能在函数内部访问。

javascript// 全局作用域let globalVar =10;

function test() {
 // 局部作用域 let localVar =5;
 console.log(globalVar); // 输出:10}

console.log(localVar); // 报错:localVar is not defined


###3. 函数####3.1 JavaScript 中的箭头函数和普通函数有什么区别?

箭头函数是匿名函数,没有自己的 this、arguments、super 或 new.target,它们继承这些值来自最近的封闭函数作用域。

javascript// 普通函数function regularFunction() {
 console.log(this); // 输出:window}

// 箭头函数const arrowFunction = () => {
 console.log(this); // 输出:window}


####3.2 解释 JavaScript 中的闭包是什么?

闭包是指可以访问其外部作用域中的变量的函数,即使在其外部作用域被销毁后仍然可以访问。

javascriptfunction outerFunction() {
 let outerVar = "I am outer";
 function innerFunction() {
 console.log(outerVar);
 }
 return innerFunction;
}

const closure = outerFunction();
closure(); // 输出:I am outer


###4. 对象和数组####4.1 如何检查一个 JavaScript 变量是对象还是数组?

可以使用 `typeof` 和 `Array.isArray()` 方法来检查。

javascriptconst obj = {};
const arr = [];

console.log(typeof obj); // 输出:objectconsole.log(Array.isArray(obj)); // 输出:falseconsole.log(typeof arr); // 输出:objectconsole.log(Array.isArray(arr)); // 输出:true


####4.2 如何将一个数组转换成字符串?

可以使用 `join()` 方法将数组转换为字符串。

javascriptconst arr = ["Hello", "World"];

const str = arr.join(", ");

console.log(str); // 输出:Hello, World


###5. 异步编程####5.1 JavaScript 中的 Promise 是什么?它的作用是什么?

Promise 是用于处理异步操作的对象,它代表一个异步操作的最终完成或失败,并且其结果可能是一个值、另一个 Promise,或者是一个异常对象。

javascriptconst promise = new Promise((resolve, reject) => {
 setTimeout(() => {
 resolve("Success!");
 },1000);
});

promise.then((value) => {
 console.log(value); // 输出:Success!
});


####5.2 解释异步函数和 await 关键字的作用。

异步函数是指返回一个 Promise 对象的函数,并且可以在函数内使用 await 关键字来等待 Promise 对象的解决。

javascriptasync function fetchData() {
 const response = await fetch(' /> const data = await response.json();
 return data;
}

fetchData().then(data => {
 console.log(data);
});


### 结语这篇文章覆盖了一些常见的 JavaScript 面试题,包括数据类型、变量和作用域、函数、对象和数组、异步编程等方面。通过仔细阅读问题和相应的解答,你可以更好地准备你的 JavaScript 面试。祝你面试顺利!

其他信息

其他资源

Top