JavaScript 实战面试题及答案.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

JavaScript实战面试题及答案

一、基础语法篇(考察实际编码细节)

题目:var、let、const声明变量的区别?实际开发中优先用哪个?

答案:

作用域:var是函数级作用域,存在变量提升;let/const是块级作用域({}内生效),无变量提升且有暂时性死区。

重复声明:var允许重复声明,let/const不允许。

赋值:const声明时必须赋值,且后续不能修改引用(基本类型值不可改,对象/数组可改内部属性)。

开发优先:优先用const(确保值不被意外修改),需要重新赋值时用let,尽量不用var(避免作用域混乱和变量污染)。

题目:判断数据类型有哪些方法?各自的优缺点?

答案:

typeof:优点是简单,能区分基本类型(除null外,typeofnull会返回object);缺点是无法区分引用类型(数组、对象、null都返回object)。

instanceof:优点是能区分引用类型(如arrinstanceofArray可判断数组);缺点是无法判断基本类型,且原型链修改后可能失效(如Array.prototype.proto=Object.prototype,arrinstanceofObject也会为true)。

Object.prototype.toString.call():优点是最准确,能区分所有类型(如Object.prototype.toString.call(null)返回[objectNull],call(arr)返回[objectArray]);缺点是写法稍繁琐,需提取结果中的类型名。

二、异步编程篇(考察实际业务处理能力)

题目:Promise有哪三种状态?如何解决Promise回调地狱?

答案:

三种状态:pending(等待中)、fulfilled(成功)、rejected(失败);状态一旦改变(pending→fulfilled或pending→rejected),就不可再变。

解决回调地狱:

用Promise链式调用(.then()方法返回新Promise,可连续调用),避免嵌套。

结合async/await(语法糖,将异步代码同步化编写),代码更直观。例如:

asyncfunctionfetchData(){

try{

constres1=awaitfetch(/api/1);//等待第一个请求完成

constdata1=awaitres1.json();

constres2=awaitfetch(`/api/2?data=${data1.id}`);//依赖第一个请求结果

constdata2=awaitres2.json();

returndata2;

}catch(err){

console.error(请求失败:,err);//统一捕获错误

}

}

题目:宏任务和微任务的区别?举几个常见的宏/微任务例子。

答案:

区别:JS执行时先执行同步代码,再清空微任务队列,最后执行一个宏任务,循环此过程(事件循环机制)。

微任务(优先级高):Promise.then/catch/finally、async/await中的异步代码、queueMicrotask()。

宏任务(优先级低):setTimeout、setInterval、DOM事件(如click)、AJAX请求、script脚本执行。

例子:以下代码输出顺序是?

console.log(1);

setTimeout(()=console.log(2),0);

Promise.resolve().then(()=console.log(3));

console.log(4);

//输出:1→4→3→2(同步代码先执行,再微任务,最后宏任务)

三、原型与继承篇(考察JS核心机制理解)

题目:什么是原型链?实际开发中如何实现继承?

答案:

原型链:每个对象都有proto属性(指向其原型对象),原型对象也有自己的proto,直到指向Object.prototype(proto为null),这条链就是原型链。当访问对象属性时,会先在自身查找,找不到则沿原型链向上查找。

常用继承方式(ES6+):

//父类

classParent{

constructor(name){

this.name=name;

}

sayName(){

console.log(this.name);

}

}

//子类继承父类

clas

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档