Lang:简体中文

中级js面试题及答案

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

掌握这些,面试不再迷茫

在中级 javascript 面试中,常常会遇到一些有挑战性的题目。下面为大家详细介绍一些常见的面试题及答案。

作用域与闭包

问题:解释 javascript 中的闭包,并给出一个简单的例子。

答案:闭包是指有权访问另一个函数作用域中变量的函数。即使该函数已经执行完毕,其作用域内的变量也不会被销毁。例如:

function outer() {

var num = 10;

function inner() {

console.log(num);

}

return inner;

}

var closure = outer();

closure(); // 输出 10

在这个例子中,inner 函数就是一个闭包,它可以访问 outer 函数作用域中的 num 变量。

原型与继承

问题:简述 javascript 中的原型链继承。

答案:原型链继承是 javascript 中实现继承的一种方式。每个对象都有一个原型对象,当访问一个对象的属性或方法时,javascript 首先会在该对象本身查找,如果找不到,就会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的顶端(object.prototype)。例如:

function parent() {

this.name = 'parent';

}

parent.prototype.sayname = function() {

console.log(this.name);

};

function child() {}

child.prototype = new parent();

var child = new child();

child.sayname(); // 输出 'parent'

这里 child 函数通过将其原型设置为 parent 的实例,实现了对 parent 函数属性和方法的继承。

异步编程

问题:如何处理 javascript 中的异步操作?

答案:在 javascript 中,常见的处理异步操作的方式有回调函数、promise、async/await 等。以 promise 为例:

function asyncoperation() {

return new promise((resolve, reject) => {

settimeout(() => {

resolve('操作成功');

}, 1000);

});

}

asyncoperation()

.then(result => {

console.log(result);

})

.catch(error => {

console.error(error);

});

promise 可以避免回调地狱,使异步代码的逻辑更加清晰。

事件循环

问题:解释 javascript 中的事件循环机制。

答案:javascript 是单线程的,为了处理异步操作,引入了事件循环机制。事件循环主要包括任务队列和执行栈。当遇到异步操作时,会将其放入任务队列中,当执行栈为空时,事件循环会从任务队列中取出任务放入执行栈中执行。例如:

console.log('开始');

settimeout(() => {

console.log('定时器执行');

}, 0);

console.log('结束');

输出结果会是:开始、结束、定时器执行。因为 settimeout 是异步操作,会被放入任务队列,等执行栈中的代码执行完毕后才会执行。

性能优化

问题:如何优化 javascript 代码的性能?

答案:可以从多个方面进行优化。例如,减少 dom 操作,因为 dom 操作比较耗时,可以批量操作 dom 后再一次性更新;压缩代码,去除不必要的空格和注释,减小文件体积;使用事件委托,将事件处理程序绑定到父元素上,减少事件处理程序的数量。比如:

// 事件委托示例

var parent = document.getelementbyid('parent');

parent.addeventlistener('click', function(event) {

if (event.target.tagname === 'li') {

console.log('点击了列表项');

}

});

通过这些优化方法,可以提高 javascript 代码的执行效率。

相关资讯

联系我们

电话:028-67245228

手机:19150357110

邮箱:mwmatelook@gmail.com

在线咨询客服

以下为推荐内容

微信二维码