Lang:简体中文

web前端js面试题

日期:2025-09-08 / 来源:面试宝典

涵盖基础、应用与性能的js面试要点

在web前端开发的面试中,javascript是核心考察内容之一。下面为大家详细介绍一些常见的面试题类型。

基础语法与数据类型

面试官通常会先考察基础知识,比如数据类型。javascript有七种数据类型,其中六种基本数据类型(number、string、boolean、null、undefined、symbol)和一种引用数据类型(object)。例如,问你如何判断一个变量是数组,这就需要用到 array.isarray() 方法。代码示例如下:

let arr = [1, 2, 3];
console.log(array.isarray(arr)); // true

还有关于变量提升的问题,在javascript中,使用var声明的变量会被提升到当前作用域的顶部,可以在声明之前访问,但值为undefined。而let和const不会有这种情况。

函数与作用域

函数是javascript的一等公民,面试中经常会考察函数的定义、调用和作用域。比如闭包,闭包是指有权访问另一个函数作用域中变量的函数。看下面这个例子:

function outer() {
let num = 10;
function inner() {
console.log(num);
}
return inner;
}
let closure = outer();
closure(); // 输出10

这里的inner函数就是一个闭包,它可以访问outer函数作用域中的变量num。另外,作用域链也是常考的点,它决定了变量和函数的作用范围。

异步编程

异步编程是javascript的重要特性,常见的考察点有回调函数、promise和async/await。回调函数是最早的异步处理方式,但容易出现回调地狱问题。promise是一种更优雅的解决方案,它有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。示例代码如下:

let promise = new promise((resolve, reject) => {
settimeout(() => {
resolve('成功');
}, 1000);
});
promise.then((result) => {
console.log(result);
});

async/await是基于promise的语法糖,让异步代码看起来更像同步代码。

面向对象编程

javascript支持面向对象编程,主要通过原型链和类来实现。原型链是javascript实现继承的一种方式,每个对象都有一个原型对象,通过原型对象可以访问其原型链上的属性和方法。es6引入了类的概念,让面向对象编程更加直观。示例代码如下:

class animal {
constructor(name) {
this.name = name;
}
sayname() {
console.log(this.name);
}
}
class dog extends animal {
bark() {
console.log('汪汪汪');
}
}
let dog = new dog('旺财');
dog.sayname(); // 输出旺财
dog.bark(); // 输出汪汪汪

性能优化

在实际开发中,性能优化很重要。面试中可能会问你如何优化javascript代码的性能。比如减少dom操作,因为dom操作是比较耗时的。可以使用文档片段(documentfragment)来批量操作dom,减少重排和重绘。另外,合理使用事件委托也可以提高性能,将事件处理程序绑定到父元素上,利用事件冒泡来处理子元素的事件。

以下为推荐内容

微信二维码