- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
JavaScript高频面试题及详细解析
一、基础概念题(5题)
1.说说var、let、const的区别,为什么现在推荐用let/const?
答案:
作用域:var是函数作用域/全局作用域,let/const是块级作用域({}内有效);
提升行为:var会变量提升且初始化为undefined,let/const存在暂时性死区(TDZ),声明前使用报错;
重复声明:var允许重复声明,let/const不允许;
常量特性:const声明的变量必须初始化,且不能重新赋值(但引用类型的属性可修改)。
推荐let/const的原因:块级作用域更符合逻辑,避免变量泄露(如for循环),暂时性死区减少意外错误,const强制只读特性提升代码可维护性。
2.什么是原型链?它的作用是什么?
答案:
每个JavaScript对象都有__proto__属性(隐式原型),指向其构造函数的prototype(显式原型);当访问对象的属性/方法时,若自身没有,会通过__proto__向上查找,直到找到Object.prototype(原型链顶端),这个查找链条就是原型链。
作用:实现继承和属性共享,比如Array.prototype上的push、forEach方法,所有数组实例都能通过原型链访问,无需每个实例单独定义,节省内存。
3.解释一下JavaScript中的“假值”(falsyvalue)有哪些?
答案:
共6个假值,在布尔判断中会被转为false:
undefined、null
0、-0、NaN
(空字符串)
false
注意:空数组([])、空对象({})、字符串0、数字1都是真值,比如if([])会执行代码块。
4.什么是事件冒泡和事件捕获?如何阻止?
答案:
事件冒泡:事件从触发元素(目标元素)向上传播到父级、祖父级元素(由内向外);
事件捕获:事件从最顶层父元素向下传播到目标元素(由外向内);
阻止方法:
阻止冒泡:event.stopPropagation()(IE低版本用event.cancelBubble=true);
阻止默认行为(如表单提交、a标签跳转):event.preventDefault()(IE低版本用event.returnValue=false);
注意:returnfalse在jQuery中会同时阻止冒泡和默认行为,但原生JS中仅阻止默认行为。
5.说说typeof和instanceof的区别,各自的局限性?
答案:
typeof:检测基本数据类型(返回string/number/boolean/undefined/symbol/bigint/function),但null会返回object,引用类型(数组、对象、正则)均返回object;
instanceof:检测引用类型的原型链是否包含目标构造函数的prototype(如[]instanceofArray返回true),但基本数据类型无法用(除非通过包装对象,如newNumber(1)instanceofNumber),且跨iframe时可能失效(原型链断裂)。
局限性示例:
typeofnull===object(历史bug,无法修复);
[]instanceofObject===true(数组也是对象,无法精准区分数组和普通对象);
解决精准判断:数组用Array.isArray(),普通对象用Object.prototype.toString.call(obj)===[objectObject]。
二、进阶原理题(5题)
1.什么是闭包?闭包的用途和潜在问题?
答案:
闭包是指函数能访问其声明时所在的词法作用域,即使函数在作用域外部执行。本质是词法作用域+函数一等公民特性的结合。
常见用途:
封装私有变量(如模块模式,避免全局污染);
延长变量生命周期(如防抖节流函数中保存计时器ID);
柯里化函数(如add(1)(2)(3)=6)。
潜在问题:
内存泄漏:闭包引用的变量不会被垃圾回收机制回收,若长期持有大量数据,可能导致内存占用过高;
解决:不再使用时手动解除引用(如fn=null),避免不必要的闭包嵌套。
2.解释JavaScript的异步编程模型,说说回调地狱及其解决方案?
答案:
JavaScript是单线程语言,异步编程通过“事件循环(EventLoop)”实现:同步代码优先执行,异步任务(如定时器、AJAX、DOM事件)放入任务队列,同步代码执行完后,循环读取任务队列并执行。
回调地狱:多个异步操作嵌套(如AJAX回调里再写
您可能关注的文档
最近下载
- DB13T 527-2004 优质鸭梨地方标准.pdf VIP
- DB13T 768-2006 无公害甘薯生产技术规程.docx VIP
- 数字经济发展趋势与前景-数字经济与就业机会.pptx
- DB13T 467-2001 无公害花椰菜生产技术规程.pdf VIP
- DB13T 614-2005 苗木质量分级樟子松.pdf VIP
- 吉林版八年级下册《家乡》第17课 吉林省水力资源教案.pdf VIP
- 幼儿园课件:小班语言《我长大了》.pptx
- 14-【国家标准】色漆和清漆人工气候老化和人工辐射曝露滤过的氙弧辐射GB_T 1865-2009.pptx VIP
- 医疗机构患者自备药品管理制度(2024最新版).docx VIP
- 2025年江苏省常州市中考数学试卷(含详细答案解析).docx
原创力文档


文档评论(0)