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 面试。祝你面试顺利!