2025年js考試題庫及答案_第1頁
2025年js考試題庫及答案_第2頁
2025年js考試題庫及答案_第3頁
2025年js考試題庫及答案_第4頁
2025年js考試題庫及答案_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2025年js考試題庫及答案一、單項(xiàng)選擇題(每題2分,共30分)1.以下關(guān)于JavaScript變量聲明的說法,正確的是?A.使用var聲明的變量具有塊級作用域B.let聲明的變量在聲明前訪問會(huì)拋出ReferenceErrorC.const聲明的對象不能修改其屬性D.var聲明的變量會(huì)被提升為全局變量,無論是否在函數(shù)內(nèi)部答案:B解析:var聲明的變量具有函數(shù)作用域(A錯(cuò)誤);const聲明的對象允許修改屬性(C錯(cuò)誤);var在非函數(shù)作用域聲明的變量才是全局變量(D錯(cuò)誤);let存在暫時(shí)性死區(qū),聲明前訪問會(huì)報(bào)錯(cuò)(B正確)。2.執(zhí)行以下代碼后,控制臺輸出的結(jié)果是?```javascriptconstobj={a:1};functionfn(){obj.a=2;this.a=3;}fn();console.log(obj.a,this.a);```(假設(shè)代碼在瀏覽器全局作用域執(zhí)行)A.2undefinedB.23C.13D.1undefined答案:B解析:obj是對象引用,fn內(nèi)部修改obj.a會(huì)改變原對象值(obj.a=2);全局作用域中調(diào)用fn時(shí),this指向window,因此this.a=3會(huì)在window對象上添加a屬性(瀏覽器環(huán)境中全局this指向window),故輸出2和3。3.以下關(guān)于Promise的說法,錯(cuò)誤的是?A.Ptotype.catch()等價(jià)于.then(null,onReject)B.Promise.resolve(1).then()會(huì)返回一個(gè)fulfilled狀態(tài)的PromiseC.未被捕獲的Promise拒絕會(huì)導(dǎo)致進(jìn)程崩潰D.Promise.all([Promise.resolve(1),2,Promise.reject(3)])會(huì)立即reject答案:C解析:現(xiàn)代瀏覽器中未被捕獲的Promise拒絕會(huì)觸發(fā)unhandledrejection事件,但不會(huì)導(dǎo)致進(jìn)程崩潰(C錯(cuò)誤);其他選項(xiàng)均符合Promise規(guī)范。4.執(zhí)行以下代碼,輸出順序正確的是?```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解析:同步代碼先執(zhí)行(輸出1、4);微任務(wù)隊(duì)列包含Promise.resolve().then()和newPromise的then(執(zhí)行順序?yàn)?、5);宏任務(wù)setTimeout回調(diào)最后執(zhí)行(輸出2)。5.關(guān)于ES6模塊特性,以下說法錯(cuò)誤的是?A.模塊默認(rèn)開啟嚴(yán)格模式B.import語句可以在條件語句中動(dòng)態(tài)加載模塊C.exportdefault可以導(dǎo)出一個(gè)默認(rèn)值D.模塊頂層的this值為undefined答案:B解析:import語句是靜態(tài)的,不能在條件語句中使用(動(dòng)態(tài)加載需用import()函數(shù)),B錯(cuò)誤。6.以下代碼執(zhí)行后,arr的結(jié)果是?```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層嵌套數(shù)組,原數(shù)組嵌套深度為2([4,[5,6]]是第二層),因此完全展開為一維數(shù)組。7.關(guān)于JavaScript原型鏈,以下說法正確的是?A.對象的__proto__屬性指向其構(gòu)造函數(shù)的prototype屬性B.所有對象的原型鏈最終都指向OtotypeC.Function的原型鏈?zhǔn)荈totype→Ototype→nullD.實(shí)例的constructor屬性一定指向其構(gòu)造函數(shù)答案:A解析:B錯(cuò)誤(如Object.create(null)創(chuàng)建的對象無原型);C錯(cuò)誤(Ftotype的原型是Ototype);D錯(cuò)誤(可通過修改prototype改變constructor指向)。8.執(zhí)行以下代碼,輸出結(jié)果是?```javascriptfunctionFoo(){this.bar=function(){console.log(1);};}Ftotype.bar=function(){console.log(2);};constobj=newFoo();obj.bar();```A.1B.2C.undefinedD.報(bào)錯(cuò)答案:A解析:實(shí)例對象obj自身有bar方法(構(gòu)造函數(shù)內(nèi)定義),優(yōu)先于原型鏈上的bar方法。9.以下哪項(xiàng)不是JavaScript的基本數(shù)據(jù)類型?A.BigIntB.SymbolC.MapD.Null答案:C解析:基本數(shù)據(jù)類型包括Number、String、Boolean、Undefined、Null、Symbol、BigInt;Map是引用類型。10.關(guān)于事件委托(事件代理),以下說法錯(cuò)誤的是?A.可以減少事件監(jiān)聽器的數(shù)量B.適用于動(dòng)態(tài)添加的子元素C.利用了事件冒泡機(jī)制D.只能綁定在父元素的捕獲階段答案:D解析:事件委托通常利用冒泡階段(默認(rèn)),也可以綁定在捕獲階段,但不是“只能”(D錯(cuò)誤)。11.執(zhí)行以下代碼,輸出結(jié)果是?```javascriptconsta=1;functionfn(){console.log(a);consta=2;}fn();```A.1B.2C.undefinedD.報(bào)錯(cuò)答案:D解析:函數(shù)內(nèi)部使用let/const聲明的變量會(huì)形成暫時(shí)性死區(qū),在聲明前訪問會(huì)拋出ReferenceError(盡管這里用了var的提升特性,但此處是const聲明,故報(bào)錯(cuò))。12.以下代碼中,能正確實(shí)現(xiàn)數(shù)組去重的是?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正確,重復(fù)元素的indexOf返回第一個(gè)出現(xiàn)的索引);reduce+includes(C正確)。13.關(guān)于防抖(debounce)函數(shù),以下描述正確的是?A.觸發(fā)事件后立即執(zhí)行,之后在設(shè)定時(shí)間內(nèi)再次觸發(fā)則重新計(jì)時(shí)B.觸發(fā)事件后延遲執(zhí)行,若在延遲期內(nèi)再次觸發(fā)則重新計(jì)時(shí)C.適用于滾動(dòng)事件等高頻觸發(fā)場景D.與節(jié)流(throttle)的核心區(qū)別是是否允許一定時(shí)間內(nèi)多次執(zhí)行答案:B解析:防抖是延遲執(zhí)行,重復(fù)觸發(fā)則重置計(jì)時(shí)(B正確);節(jié)流允許一定時(shí)間內(nèi)執(zhí)行一次(D錯(cuò)誤)。14.以下關(guān)于可選鏈操作符(?.)的使用,錯(cuò)誤的是?A.`obj?.prop`B.`arr?.[0]`C.`fn?.()`D.`p?.()`答案:無錯(cuò)誤(題目設(shè)計(jì)為干擾項(xiàng),實(shí)際四個(gè)選項(xiàng)均正確)15.執(zhí)行以下代碼,輸出結(jié)果是?```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語法將數(shù)組`[1,2,3]`解構(gòu)為變量a=1,b=2,c=3,應(yīng)寫為:__________。答案:const[a,b,c]=[1,2,3];2.箭頭函數(shù)`(x)=>{returnx+1;}`的簡寫形式是:__________。答案:x=>x+13.要獲取數(shù)組`arr`的最后一個(gè)元素(不修改原數(shù)組),ES2023中推薦使用的方法是:__________。答案:arr.at(-1)4.正則表達(dá)式`/ab?c/`可以匹配的字符串有:abc、__________。答案:ac(b出現(xiàn)0次)5.異步函數(shù)(asyncfunction)中返回一個(gè)值時(shí),實(shí)際會(huì)被包裝為__________。答案:Promise(fulfilled狀態(tài))6.要阻止事件冒泡,應(yīng)調(diào)用事件對象的__________方法。答案:stopPropagation()7.原型鏈的終點(diǎn)是__________(填具體值)。答案:null8.用`Object.defineProperty`定義屬性時(shí),默認(rèn)不可枚舉的描述符是:__________。答案:enumerable:false(默認(rèn)值)9.模塊作用域中,使用__________關(guān)鍵字導(dǎo)出多個(gè)命名成員。答案:export10.執(zhí)行`0.1+0.2===0.3`的結(jié)果是__________(填布爾值)。答案:false三、簡答題(每題6分,共30分)1.簡述JavaScript中this的四種綁定規(guī)則。答案:(1)默認(rèn)綁定:非嚴(yán)格模式下,獨(dú)立函數(shù)調(diào)用時(shí)this指向全局對象(瀏覽器為window,Node.js為global);嚴(yán)格模式下為undefined。(2)隱式綁定:函數(shù)作為對象的方法調(diào)用時(shí),this指向該對象(如obj.fn()中this為obj)。(3)顯式綁定:通過call()、apply()、bind()方法強(qiáng)制指定this指向。(4)new綁定:通過new調(diào)用構(gòu)造函數(shù)時(shí),this指向新創(chuàng)建的實(shí)例對象。2.說明閉包的定義及其常見應(yīng)用場景。答案:閉包是函數(shù)與其詞法環(huán)境的組合,使得函數(shù)可以訪問其外層函數(shù)作用域中的變量,即使外層函數(shù)已執(zhí)行完畢。應(yīng)用場景包括:(1)封裝私有變量(如模塊模式);(2)實(shí)現(xiàn)函數(shù)柯里化;(3)延遲執(zhí)行(如事件回調(diào)保留外部變量狀態(tài));(4)創(chuàng)建計(jì)數(shù)器等需要持久化狀態(tài)的函數(shù)。3.比較setTimeout和setInterval的區(qū)別,并說明如何避免setInterval的累積問題。答案:區(qū)別:(1)setTimeout執(zhí)行一次回調(diào)后結(jié)束;setInterval重復(fù)執(zhí)行回調(diào)。(2)setInterval的執(zhí)行間隔是從回調(diào)開始執(zhí)行時(shí)計(jì)算,若回調(diào)執(zhí)行時(shí)間超過間隔,會(huì)導(dǎo)致下一次回調(diào)立即執(zhí)行(累積)。避免累積的方法:在setTimeout的回調(diào)內(nèi)部遞歸調(diào)用自身(如`functionloop(){setTimeout(loop,delay);}`),確保每次執(zhí)行間隔為上一次回調(diào)結(jié)束后的時(shí)間。4.解釋原型鏈的作用,并說明如何實(shí)現(xiàn)對象的繼承(ES5和ES6兩種方式)。答案:原型鏈的作用是實(shí)現(xiàn)對象的屬性和方法共享,當(dāng)訪問對象的屬性時(shí),若對象自身不存在該屬性,則會(huì)沿著原型鏈向上查找,直到Ototype或null。ES5實(shí)現(xiàn)繼承:通過構(gòu)造函數(shù)原型鏈繼承(如`Ctotype=Object.create(Ptotype);`),并修正constructor屬性。ES6實(shí)現(xiàn)繼承:使用class和extends關(guān)鍵字(如`classChildextendsParent{...}`),自動(dòng)處理原型鏈。5.說明JavaScript中事件循環(huán)(EventLoop)的執(zhí)行機(jī)制,區(qū)分微任務(wù)(Microtask)和宏任務(wù)(Macrotask)。答案:事件循環(huán)的核心是不斷從任務(wù)隊(duì)列中取出任務(wù)執(zhí)行,執(zhí)行順序?yàn)椋海?)執(zhí)行同步代碼;(2)執(zhí)行所有微任務(wù)隊(duì)列中的任務(wù)(包括Promise.then()、MutationObserver等);(3)執(zhí)行宏任務(wù)隊(duì)列中的一個(gè)任務(wù)(如setTimeout、setInterval、I/O事件、UI渲染等);(4)重復(fù)步驟(2)和(3)。微任務(wù)由Promise、process.nextTick(Node.js)等產(chǎn)生,在當(dāng)前事件循環(huán)的同步代碼執(zhí)行后立即執(zhí)行;宏任務(wù)由定時(shí)器、I/O等產(chǎn)生,需要等待當(dāng)前事件循環(huán)的微任務(wù)執(zhí)行完畢后才會(huì)執(zhí)行。四、編程題(每題8分,共20分)1.實(shí)現(xiàn)一個(gè)函數(shù)`flattenArray`,接收一個(gè)任意嵌套的數(shù)組,返回其扁平化后的一維數(shù)組(要求不使用內(nèi)置的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遍歷數(shù)組,若當(dāng)前元素是數(shù)組則遞歸扁平化,否則直接合并到結(jié)果數(shù)組。2.實(shí)現(xiàn)一個(gè)防抖函數(shù)`debounce`,要求:當(dāng)持續(xù)觸發(fā)事件時(shí),一定時(shí)間內(nèi)沒有再次觸發(fā)才會(huì)執(zhí)行回調(diào);若在延遲期內(nèi)再次觸發(fā),則重新計(jì)時(shí)。答案:```javascriptfunctiondebounce(fn,delay){lettimer=null;returnfunction(...args){if(timer)clearTimeout(timer);timer=setTimeout(()=>{fn.apply(this,args);timer=null;},delay);};}```解析:通過閉包保存定時(shí)器ID,每次觸發(fā)時(shí)清除之前

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論