--- tags: [Frontend, Exam, Axios, React, Vue, JavaScript, CSS, Node.js, HTTP] create time: 2026-04-30 14:30 --- # 武科大 - 第六次前端摸底测试(错题复盘) ## 概述 本文档记录金山考试 - 武科大第六次前端摸底测试的**全部 110 道单选题错题**。本次测试覆盖 JavaScript 基础、事件机制、异步编程、Axios/Fetch、浏览器 API、HTTP 协议、CSS、Vue 3、React Hooks、Node.js / npm、Webpack 等知识领域。 错题库已按**知识点主题**分组,每题附带详细解析、代码示例和图解,帮助查漏补缺。 > [!summary] 错误统计 > - **总题数**:110 道题 > - **错题数**:27 道 > - **正确率**:~75% > - **薄弱领域**:事件机制理解、异步执行顺序、Vue/React 深度概念、HTTP 状态码区分 ## 错题详解 ### 一、事件处理 #### Q2 — 取消默认事件 vs 阻止冒泡 ❌ 答 A,正确 C > **题目**:如何取消默认事件效果? > > | 选项 | 内容 | > |------|------| > | A | `cancelBubble=true` | > | B | `stopPropagation()` | > | C | `preventDefault()` ✅ | > | D | `return` | > [!warning] 核心混淆 > `cancelBubble` 和 `stopPropagation()` 是**阻止事件冒泡**,不是取消默认行为! > > - `e.preventDefault()` → 取消元素的**默认动作**(如 `` 跳转、`
` 提交) > - `e.stopPropagation()` → 停止事件向**父元素传播**(不冒泡了) > - `e.cancelBubble = true` → IE 旧版写法,等同于 `stopPropagation()` > - 在行内 `onclick="return false"` 可以等效于 `preventDefault() + stopPropagation()` ```mermaid flowchart LR subgraph "事件流" A[捕获阶段] --> B[目标阶段] B --> C["冒泡阶段"] end preventDefault["preventDefault()\n→ 阻止默认行为\n不影响冒泡"] -.-> B stopPropagation["stopPropagation()\n→ 阻止向上冒泡\n不影响默认行为"] -.-> C style preventDefault fill:#EF4444,color:#fff style stopPropagation fill:#3B82F6,color:#fff ``` > [!tip] 常见默认行为 > - `` 点击跳转 > - `` 提交刷新页面 > - 右键菜单 > - 文本选择拖拽 > - 鼠标滚轮页面滚动 --- #### Q19 — CSS 继承性 ❌ 答 D,正确 C > **题目**:下面哪个属性不会继承? > > | 选项 | 内容 | > |------|------| > | A | `color` | > | B | `font-size` | > | C | `border` ✅ | > | D | `line-height` | > [!answer] 解析 > CSS 中只有**部分属性会继承**给子元素。可继承的属性主要是与**文本渲染**相关的:`color`、`font-*`、`line-height`、`text-*`、`visibility` 等。而布局相关属性几乎都不继承:`border`、`margin`、`padding`、`width`、`height`、`background` 等。 ```mermaid graph TB subgraph "可继承的属性" T1["color"] T2["font-size / font-family"] T3["line-height"] T4["text-align"] end subgraph "不可继承的属性 ← 重点记 border!" B1["border"] B2["margin / padding"] B3["width / height"] B4["background"] end style B1 fill:#EF4444,color:#fff ``` --- #### Q16 — 获取 CSS 样式 ❌ 答 A,正确 B > **题目**:下面哪个方法可以获取元素的 CSS 样式? > > | 选项 | 内容 | > |------|------| > | A | `getElementStyle()` | > | B | `getComputedStyle()` ✅ | > | C | `getStyle()` | > | D | `getCurrentStyle()` | > [!answer] 解析 > - **标准方法**:`window.getComputedStyle(element)` → 返回所有最终计算后的样式 > - **IE8 兼容**:`element.currentStyle`(已过时,仅 IE 支持) > - A、C 都不是原生 API ```js const el = document.querySelector('.box'); const styles = window.getComputedStyle(el); console.log(styles.backgroundColor); // 计算后的值,如 "rgb(255, 0, 0)" ``` > [!tip] `getComputedStyle` vs `el.style` > | 方法 | 能读什么 | 返回值类型 | > |------|---------|-----------| > | `el.style.prop` | 只读元素**内联样式**(`style="..."`) | 字符串 | > | `getComputedStyle()` | 读**所有生效**样式(含 CSS 文件、类) | CSSStyleDeclaration 对象 | --- #### Q31 — 阻止事件冒泡 ❌ 答 C,正确 B > **题目**:用于阻止事件冒泡的方法? > > | 选项 | 内容 | > |------|------| > | A | `事件对象.stopDeafault()` | > | B | `事件对象.stopPropagation()` ✅ | > | C | `事件对象.preventPropagation()` | > | D | `事件对象.preventDefault()` | > [!answer] 解析 > 注意拼写!`stopPropagation()` 是标准方法。A 选项 `stopDeafault` 是个拼写陷阱(应为 `preventDefault`),D 是阻止默认行为而非冒泡。 --- #### Q32 — 事件委托 ❌ 答 D,正确 D(此题作答正确,但文档中标注为错题——请确认) > **题目**:关于事件委托,说法错误的是? > > | 选项 | 内容 | > |------|------| > | D(错误说法) | 事件委托中的 `this` 与 `e.target` 指向同一个对象,它们可以随意互换 | > [!answer] 解析 > 事件委托中绑定的回调函数的 `this` 指向**注册事件的父元素**,而 `e.target` 指向**实际触发事件的子元素**——两者可能不同! ```js ul.addEventListener('click', function(e) { console.log(this); //