正在準備內容……

JavaScript 測驗

閱讀24段原創JavaScript程式,預測輸出或執行前語法錯誤。免費檢視四組正確數、全部答案、逐題解析與四篇完整指南;按Node ES模組條件,不計時,不用註冊。

24 題 · 約 10 分鐘 · 無需註冊原創練習題 · 逐題解析與複習指南免費

每段獨立作為Node 24.19.0的.mjs ES模組,選擇準確控制台輸出或執行前語法錯誤結果。ES模組為嚴格模式;無題依賴DOM、外部輸入、Node I/O或混合定時器順序。兩語保留相同英文程式碼及輸出值,說明與解析雙語。無計時或速度獎勵,24題有效選擇後顯示全部所選、答案、解析及全文。若邊答邊查資料,請按該條件理解正確數。

按Node 24.19.0的獨立.mjs ES模組條件,練習值與運算子、繫結與函式、陣列與物件、Promise與錯誤四組各六題。判斷程式列印什麼,或是否在執行前未過語法檢查。完成後免費檢視全部所選、答案與解析、四篇完整指南;讀給定程式碼並選結果,無需提交程式。

JavaScript 測驗練什麼?四組程式碼閱讀任務

24道原創選擇題覆蓋值與運算子、繫結與函式、陣列與物件、Promise與錯誤,每組六題。你需要讀取完整片段,預測列印文本或執行前的語法失敗;完成後免費檢視四組正確數、全部程式碼、所選、答案、解析與四篇完整複習指南。約10分鐘為閱讀估計,本版不計時。

練習要求讀懂給定程式碼的語義,而非在網站提交程式或完成專案。它適合複習轉換、作用域、資料變化和非同步控制流這些具體規則;沒有DOM、網路請求、資料庫或框架題。JavaScript語言規則與宿主介面需要分別看,不能用這24題代表完整前端、Node服務端或軟體工程能力。[4]

先固定環境:Node 24.19.0與獨立ES模組

每段程式碼按Node 24.19.0中的獨立.mjs檔案閱讀,ES模組採用嚴格模式。Node以.mjs等明確標記識別ES模組。[4] 每題重新開始,不能把上一題的變數、物件或佇列帶到下一題;也不要把瀏覽器控制台、普通script或CommonJS中的預設行為代入本題。

本輪已在該精確Node版本復跑全部24段:22段按答案列印,兩段按預期未過語法檢查。核查解析與輸出能支援這些片段的答案,不意味著覆蓋所有引擎或最新JavaScript特性。複習時可先寫預測,再在自己的臨時.mjs中核對;網站本身不執行訪問者提供的程式碼。

值與運算子:型別轉換要按實際操作追蹤

加號在基本值中遇字串時可拼接,減法則走數值運算路徑,不能套“一律當數字”或“一律拼接”。[1] 獨立新例分別算"8" + 3與"8" - 3,結果為文本83與數值5;用冒號連線列印為83:5。先標兩側型別,再辨運算子、轉換和結果型別,最後才看控制台外觀。

空值與假值也要分開。新例用空字串分別計算"" ?? "alt"和"" || "alt",以豎線連線得到|alt:前者保留空字串,後者選後備值。嚴格相等、Number轉換和Number.isNaN則各回答不同問題;遇到NaN,先看它從哪步產生,不能把轉換失敗一概當作丟擲異常。

繫結與閉包:區分建立次數、訪問關係與修改

const限制重賦繫結,不會把它指向的普通物件自動凍結;塊中同名let可建立另一條繫結。讀函式時還要區分建立閉包與呼叫閉包。新例make每次新建n=10,並返回每次令n加3的函式;a=make()、b=make()後依次呼叫a、b、a,輸出13:13:16。a與b來自兩次建立,a自己的兩次呼叫共享其繫結。

複習時畫“名稱→物件”與“函式→可訪問繫結”的簡圖,不把它當引擎實體記憶體圖。再單獨記錄預設形參初始化:undefined與null、零、空字串不是相同輸入。遇到重複宣告或普通const缺初始化器,應先判斷模組能否開始執行,不急著計算後面的console.log。

陣列變換:回撥、邊界和初始值逐步核對

map與filter建立新陣列,但回撥仍可能產生副作用;方法名稱不能替代閱讀回撥。[2] 新例[4,0,9]先filter(n=>n>=4),再map(n=>n*2),結果為[8,18],源陣列長度仍為3。若只把>=改成>,4就被排除;解釋答案時須指出實際邊界,而非只說“篩選大數”。

reduce還需把顯式初值算進去。[2] 新例[4,9].reduce((sum,n)=>sum+n,10)從10開始,得到23;它不是隻把陣列元素加成13。逐步列輸入、回撥返回值、累加器和輸出,再分別檢查源是否被當前回撥改變。題本中的純數值回撥,不證明所有物件陣列或稀疏陣列都按同一細節處理。

物件與原型:外層複製、共享巢狀與屬性自有

新例a={cfg:{ok:false}},b={...a}後令b.cfg.ok=true,a.cfg.ok也為true,但a===b為false。外層身份不同,cfg仍指向同一個巢狀物件。若在另一個新例中令a的ok初始為true,使用c={...a,cfg:{...a.cfg}}再把c.cfg.ok改false,便得到a為true、c為false;這只是額外複製了該層,不是通用深複製。

屬性讀取得到值,不代表屬性屬於當前物件;原型鏈查詢與Object.hasOwn是兩個檢查。Set大小也不是輸入陣列長度,重複字串只保留一個相等值。回顧時把“外層是否相同”“哪層仍共享”“從哪裡讀到”“是否自有”分別回答,避免把這些問題縮成一個“是否複製成功”。

Promise:追蹤同步步驟、返回值與輸入順序

先完成當前同步步驟,再沿題定Promise鏈跟蹤每個反應。新例先註冊Promise.resolve(6)的then,回撥把12加入log並返回7,下個then列印log與值;註冊後同步把sync加入log,最終列印sync,12:7。陣列順序、返回值和下游收到的值是三個需要分別核對的記錄,不要都寫成“非同步晚點執行”。

Promise.all按輸入位置收集履行值,而非按完成先後排序。[3] 新例first尚待手動resolve,second已履行,Promise.all([first,second])建立後再使first履行為first,得到first:second。catch正常返回值可使下游履行,拋錯則走拒絕路徑;本版沒有網路、定時器混排或取消機制題,不能由這些片段推斷所有宿主回撥順序。

錯誤型別與發生階段:名稱相同不代表路徑相同

模組自身語法檢查失敗時,其console.log不會開始執行;有效模組在執行時仍可丟擲錯誤。新例在try中呼叫JSON.parse解析文本{"ok":},JSON不完整,catch可列印caught:SyntaxError。這裡JavaScript片段已成功開始執行,不能因為名稱是SyntaxError就選成“模組執行前語法錯誤”。

凍結屬性賦值還依賴嚴格模式。按本版ES模組條件,給不可寫屬性賦值會拋TypeError,原屬性不會因此改成新數值。複習時按“能解析嗎→執行到哪步→拋了什麼→誰捕獲→最終列印什麼”核對;不要依賴完整英文報錯句,因為不同引擎或版本可能有不同措辭。

怎樣使用正確數?從逐題證據到下一次練習

每題答對1、其他有效選擇0,四組各0–6,總0–24,沒有速度或部分分。新算例[3,5,2,4]與[5,2,4,3]均為14,卻對應不同複習位置。任何結果都保留24條解析與四篇各七節完整指南;正確數本身不能診斷是型別、閱讀、回撥還是記憶造成錯誤。

先獨立預測,再讀解析並找出最早分歧的一步,最後只改變一個條件重寫小片段。程式碼語義有規範與執行結果可核對,[1][2][3][4] 但本題本尚無開發者常模、招聘效標或中英文等值研究,不輸出初中高等級、百分位、職務推薦或證書。固定題組重測也可能受記憶影響,理解遷移宜用未見過的程式碼檢驗。

分項複習指南

  • 值與運算子

    複習拼接、減法、嚴格相等、空值合併、邏輯或及顯式NaN核對。

  • 繫結與函式

    複習const與修改、塊內遮蔽、閉包保留繫結、預設形參及兩種早期語法錯誤。

  • 陣列與物件

    複習map、filter、reduce、淺展開復制、Set大小以及自有與繼承屬性。

  • Promise與錯誤

    複習Promise反應、all、catch恢復、async返回值、JSON解析及嚴格模式凍結屬性賦值。

計分方法與使用範圍

每個匹配答案記一道正確

每個匹配答案加1題,其他有效選擇加0題。四組六題合成正確數/24,無加權、部分分、反向計分或時間獎勵。24題有效選擇前不給個人正確數,不默補漏題。

使用完整程式碼與答案核對

報告保留每段原創程式碼、所選、答案及解析。零分、部分答對、全對都可讀四份全文。2/6只是所給六題兩個匹配答案,不是百分位、校準開發者等級、招聘線或資格。

固定且宣告環境的練習題組

題組按Node 24.19.0的.mjs ES模組實跑,選定ECMAScript 2024核心規則作參考,不聲稱覆蓋最新特性或所有瀏覽器、Node宿主介面行為相同。不評專案開發、架構或生產除錯。重測還是24題,約十分鐘是編輯估計,不是實測計時基準。

原創片段與核過的結果

費馬編寫程式、干擾項、解析及指南,來源說明選定語言或模組規則,不搬其例子或專有招聘題。本獨立練習無廠商背書或認證。程式碼作為轉義文本顯示,選擇在瀏覽器計分,不執行訪問者指令碼。

常見問題

採用哪個JavaScript環境?

每段是用Node 24.19.0核過的獨立.mjs ES模組,採用嚴格模式。任務取選定核心語言與Promise行為,不含DOM、I/O或混合定時器排序,不聲稱所有瀏覽器與宿主介面相同。

需要安裝Node或提交程式碼嗎?

不用。讀給定片段並選擇結果,網站不執行訪問者指令碼、不要求上傳、不查私有倉庫。兩語程式碼相同,說明及解析雙語。

正確數會給開發者等級或證書嗎?

不會。它只數一個原創題組匹配答案的次數,沒有驗證過的初級到專家檔、人群常模、僱主門檻、職務匹配或廠商資格。識別可見選項不同於開發維護應用。

全部題解與四份完整指南免費嗎?

是。24題有效選擇後可看每段程式碼、所選、答案與解析,四份完整公開指南開測前也可讀。不用註冊、電子郵件、付款或買證書。

有計時嗎,重測會換題嗎?

無計時或速度獎勵,約十分鐘是編輯估計。重測用固定題組,不生成經校準平行題本。看過答案後宜換小程式,重測提高可能來自記憶。

草稿與分享怎樣處理?

答案留在瀏覽器,可選標籤頁草稿24小時失效,完成、退出並清除或重測時刪除,未存草稿則重新整理丟進度。分享只有公開練習連結,不含答案、正確數或私有標識。

這是JavaScript程式碼閱讀測試,還是線上程式設計考試?

這是24題程式碼閱讀選擇練習,不要求寫程式碼、上傳專案或執行訪問者指令碼。它記錄對給定輸出與語法結果的判斷,和獨立完成應用功能屬於不同任務。

為什麼要明確.mjs和Node版本?

模組標記、嚴格模式和宿主影響解釋條件。.mjs明確按ES模組讀取,所有題獨立按Node 24.19.0核驗;不要把瀏覽器控制台或CommonJS當成題中環境。[4]

JavaScript與Java 測驗可以互相換算嗎?

不能。名稱相近但語言、題目與規則不同,本頁不是Java測驗,也未與其他語言或平臺建立分數等值關係。

const是不是表示整個物件不可修改?

不是。const限制繫結重賦,普通物件的屬性仍可按自身規則修改;Object.freeze又是另一操作,且只凍結該物件本層。讀題時分別追蹤繫結、物件和巢狀物件。

map建立新陣列,是否意味著回撥沒有副作用?

不意味著。map本身建立結果陣列,回撥仍可以修改物件或其他狀態。本站題的結論依賴給定回撥,不能把它推廣到任意map程式碼。[2]

Promise.all的結果按誰先完成排序嗎?

不是。成功履行時,結果陣列對應輸入位置。先後完成影響等待過程,不會把這些位置重新排序;拒絕也不自動說明其他任務已取消。[3]

SyntaxError是否總意味著JavaScript未開始執行?

不是。模組自身語法失敗在執行前;有效程式執行時呼叫JSON.parse也可能拋SyntaxError,並可被外層try/catch捕獲。先判斷髮生階段,再判斷輸出。

英文程式碼相同,中英文正確數就完全等值嗎?

不建立等值。兩語保持同一程式碼、答案鍵和報告結構,說明理解與閱讀條件仍可能影響作答。記錄語言、查閱資料及是否見過題目,再解釋自己的練習記錄。

參考資料