版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年js考试题库及答案一、单项选择题(每题2分,共30分)1.以下关于JavaScript变量声明的说法,正确的是?A.使用var声明的变量具有块级作用域B.let声明的变量在声明前访问会抛出ReferenceErrorC.const声明的对象不能修改其属性D.var声明的变量会被提升为全局变量,无论是否在函数内部答案:B解析:var声明的变量具有函数作用域(A错误);const声明的对象允许修改属性(C错误);var在非函数作用域声明的变量才是全局变量(D错误);let存在暂时性死区,声明前访问会报错(B正确)。2.执行以下代码后,控制台输出的结果是?```javascriptconstobj={a:1};functionfn(){obj.a=2;this.a=3;}fn();console.log(obj.a,this.a);```(假设代码在浏览器全局作用域执行)A.2undefinedB.23C.13D.1undefined答案:B解析:obj是对象引用,fn内部修改obj.a会改变原对象值(obj.a=2);全局作用域中调用fn时,this指向window,因此this.a=3会在window对象上添加a属性(浏览器环境中全局this指向window),故输出2和3。3.以下关于Promise的说法,错误的是?A.Ptotype.catch()等价于.then(null,onReject)B.Promise.resolve(1).then()会返回一个fulfilled状态的PromiseC.未被捕获的Promise拒绝会导致进程崩溃D.Promise.all([Promise.resolve(1),2,Promise.reject(3)])会立即reject答案:C解析:现代浏览器中未被捕获的Promise拒绝会触发unhandledrejection事件,但不会导致进程崩溃(C错误);其他选项均符合Promise规范。4.执行以下代码,输出顺序正确的是?```javascriptconsole.log('1');setTimeout(()=>console.log('2'),0);Promise.resolve().then(()=>console.log('3'));newPromise((resolve)=>{console.log('4');resolve();}).then(()=>console.log('5'));```A.14352B.14532C.14325D.12345答案:A解析:同步代码先执行(输出1、4);微任务队列包含Promise.resolve().then()和newPromise的then(执行顺序为3、5);宏任务setTimeout回调最后执行(输出2)。5.关于ES6模块特性,以下说法错误的是?A.模块默认开启严格模式B.import语句可以在条件语句中动态加载模块C.exportdefault可以导出一个默认值D.模块顶层的this值为undefined答案:B解析:import语句是静态的,不能在条件语句中使用(动态加载需用import()函数),B错误。6.以下代码执行后,arr的结果是?```javascriptconstarr=[1,[2,3],[4,[5,6]]];constflattened=arr.flat(2);```A.[1,2,3,4,5,6]B.[1,2,3,4,[5,6]]C.[1,[2,3],4,5,6]D.[1,2,3,4,5,6,7]答案:A解析:flat(2)表示展开2层嵌套数组,原数组嵌套深度为2([4,[5,6]]是第二层),因此完全展开为一维数组。7.关于JavaScript原型链,以下说法正确的是?A.对象的__proto__属性指向其构造函数的prototype属性B.所有对象的原型链最终都指向OtotypeC.Function的原型链是Ftotype→Ototype→nullD.实例的constructor属性一定指向其构造函数答案:A解析:B错误(如Object.create(null)创建的对象无原型);C错误(Ftotype的原型是Ototype);D错误(可通过修改prototype改变constructor指向)。8.执行以下代码,输出结果是?```javascriptfunctionFoo(){this.bar=function(){console.log(1);};}Ftotype.bar=function(){console.log(2);};constobj=newFoo();obj.bar();```A.1B.2C.undefinedD.报错答案:A解析:实例对象obj自身有bar方法(构造函数内定义),优先于原型链上的bar方法。9.以下哪项不是JavaScript的基本数据类型?A.BigIntB.SymbolC.MapD.Null答案:C解析:基本数据类型包括Number、String、Boolean、Undefined、Null、Symbol、BigInt;Map是引用类型。10.关于事件委托(事件代理),以下说法错误的是?A.可以减少事件监听器的数量B.适用于动态添加的子元素C.利用了事件冒泡机制D.只能绑定在父元素的捕获阶段答案:D解析:事件委托通常利用冒泡阶段(默认),也可以绑定在捕获阶段,但不是“只能”(D错误)。11.执行以下代码,输出结果是?```javascriptconsta=1;functionfn(){console.log(a);consta=2;}fn();```A.1B.2C.undefinedD.报错答案:D解析:函数内部使用let/const声明的变量会形成暂时性死区,在声明前访问会抛出ReferenceError(尽管这里用了var的提升特性,但此处是const声明,故报错)。12.以下代码中,能正确实现数组去重的是?A.`[...newSet(arr)]`B.`arr.filter((v,i)=>arr.indexOf(v)===i)`C.`arr.reduce((acc,curr)=>acc.includes(curr)?acc:[...acc,curr],[])`D.以上都是答案:D解析:Set去重(A正确);filter+indexOf(B正确,重复元素的indexOf返回第一个出现的索引);reduce+includes(C正确)。13.关于防抖(debounce)函数,以下描述正确的是?A.触发事件后立即执行,之后在设定时间内再次触发则重新计时B.触发事件后延迟执行,若在延迟期内再次触发则重新计时C.适用于滚动事件等高频触发场景D.与节流(throttle)的核心区别是是否允许一定时间内多次执行答案:B解析:防抖是延迟执行,重复触发则重置计时(B正确);节流允许一定时间内执行一次(D错误)。14.以下关于可选链操作符(?.)的使用,错误的是?A.`obj?.prop`B.`arr?.[0]`C.`fn?.()`D.`p?.()`答案:无错误(题目设计为干扰项,实际四个选项均正确)15.执行以下代码,输出结果是?```javascriptconsole.log(typeofnull);console.log(typeofundefined);```A."object""undefined"B."null""undefined"C."object""object"D."null""null"答案:A解析:typeofnull返回"object"(历史遗留问题),typeofundefined返回"undefined"。二、填空题(每题2分,共20分)1.用ES6语法将数组`[1,2,3]`解构为变量a=1,b=2,c=3,应写为:__________。答案:const[a,b,c]=[1,2,3];2.箭头函数`(x)=>{returnx+1;}`的简写形式是:__________。答案:x=>x+13.要获取数组`arr`的最后一个元素(不修改原数组),ES2023中推荐使用的方法是:__________。答案:arr.at(-1)4.正则表达式`/ab?c/`可以匹配的字符串有:abc、__________。答案:ac(b出现0次)5.异步函数(asyncfunction)中返回一个值时,实际会被包装为__________。答案:Promise(fulfilled状态)6.要阻止事件冒泡,应调用事件对象的__________方法。答案:stopPropagation()7.原型链的终点是__________(填具体值)。答案:null8.用`Object.defineProperty`定义属性时,默认不可枚举的描述符是:__________。答案:enumerable:false(默认值)9.模块作用域中,使用__________关键字导出多个命名成员。答案:export10.执行`0.1+0.2===0.3`的结果是__________(填布尔值)。答案:false三、简答题(每题6分,共30分)1.简述JavaScript中this的四种绑定规则。答案:(1)默认绑定:非严格模式下,独立函数调用时this指向全局对象(浏览器为window,Node.js为global);严格模式下为undefined。(2)隐式绑定:函数作为对象的方法调用时,this指向该对象(如obj.fn()中this为obj)。(3)显式绑定:通过call()、apply()、bind()方法强制指定this指向。(4)new绑定:通过new调用构造函数时,this指向新创建的实例对象。2.说明闭包的定义及其常见应用场景。答案:闭包是函数与其词法环境的组合,使得函数可以访问其外层函数作用域中的变量,即使外层函数已执行完毕。应用场景包括:(1)封装私有变量(如模块模式);(2)实现函数柯里化;(3)延迟执行(如事件回调保留外部变量状态);(4)创建计数器等需要持久化状态的函数。3.比较setTimeout和setInterval的区别,并说明如何避免setInterval的累积问题。答案:区别:(1)setTimeout执行一次回调后结束;setInterval重复执行回调。(2)setInterval的执行间隔是从回调开始执行时计算,若回调执行时间超过间隔,会导致下一次回调立即执行(累积)。避免累积的方法:在setTimeout的回调内部递归调用自身(如`functionloop(){setTimeout(loop,delay);}`),确保每次执行间隔为上一次回调结束后的时间。4.解释原型链的作用,并说明如何实现对象的继承(ES5和ES6两种方式)。答案:原型链的作用是实现对象的属性和方法共享,当访问对象的属性时,若对象自身不存在该属性,则会沿着原型链向上查找,直到Ototype或null。ES5实现继承:通过构造函数原型链继承(如`Ctotype=Object.create(Ptotype);`),并修正constructor属性。ES6实现继承:使用class和extends关键字(如`classChildextendsParent{...}`),自动处理原型链。5.说明JavaScript中事件循环(EventLoop)的执行机制,区分微任务(Microtask)和宏任务(Macrotask)。答案:事件循环的核心是不断从任务队列中取出任务执行,执行顺序为:(1)执行同步代码;(2)执行所有微任务队列中的任务(包括Promise.then()、MutationObserver等);(3)执行宏任务队列中的一个任务(如setTimeout、setInterval、I/O事件、UI渲染等);(4)重复步骤(2)和(3)。微任务由Promise、process.nextTick(Node.js)等产生,在当前事件循环的同步代码执行后立即执行;宏任务由定时器、I/O等产生,需要等待当前事件循环的微任务执行完毕后才会执行。四、编程题(每题8分,共20分)1.实现一个函数`flattenArray`,接收一个任意嵌套的数组,返回其扁平化后的一维数组(要求不使用内置的flat()方法)。示例:输入`[1,[2,3],[4,[5,[6]]]]`,输出`[1,2,3,4,5,6]`。答案:```javascriptfunctionflattenArray(arr){returnarr.reduce((acc,curr)=>{returnacc.concat(Array.isArray(curr)?flattenArray(curr):curr);},[]);}```解析:使用reduce遍历数组,若当前元素是数组则递归扁平化,否则直接合并到结果数组。2.实现一个防抖函数`debounce`,要求:当持续触发事件时,一定时间内没有再次触发才会执行回调;若在延迟期内再次触发,则重新计时。答案:```javascriptfunctiondebounce(fn,delay){lettimer=null;returnfunction(...args){if(timer)clearTimeout(timer);timer=setTimeout(()=>{fn.apply(this,args);timer=null;},delay);};}```解析:通过闭包保存定时器ID,每次触发时清除之前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省南昌中学2025-2026学年高一上学期1月期末物理试题(含答案)
- 微软面试题及答案
- 初中政治老师培训课件
- 法人代表委托书模板集合7篇
- 清朝娘子关战役
- 风力发电系统技术要点
- 大体积施工技术要领
- 人教版《道德与法治》八年级上册:10.2天下兴亡-匹夫有责课件
- 初中信息技术新课标解读
- 2025 小学三年级科学下册植物孢子繁殖(蕨类)观察课件
- 广东省广州市白云区2024-2025学年六年级(上)期末语文试卷(有答案)
- GB/T 45166-2024无损检测红外热成像检测总则
- 山东省菏泽市东明县2024-2025学年七年级上学期考试生物试题
- 2024年度工程成本控制优化合同
- 二零二四年医院停车场建设及运营管理合同
- 乘务长管理思路
- 2024集装箱储能系统测试大纲
- 贵州省贵阳市2023-2024学年高一上学期期末考试 物理 含解析
- 妇科小讲课 异位妊娠
- 工程设计重点难点分析及应对措施
- 2024-2030年建设工程检测行业市场深度调研及发展前景与投资研究报告
评论
0/150
提交评论