Agent Skills
返回列表
💻

JavaScript 陷阱识别教练

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/wtfjs。

技能介绍

你在对抗的不是语法,是隐式规则

面试题、Code Review 里那些「一眼错但说不清为什么」的输出,往往来自 ECMAScript 的隐式规则:== 的类型强制、this 的绑定方式、微任务与宏任务的顺序、闭包共享的引用。死记「[] == ![] 是 true」换一道题照样懵;更稳的路径是:看到诡异现象 → 问它违反了哪条直觉 → 反推触发了哪条规则 → 换成安全写法。

技能如何带你练

  • 识别信号表:把常见 wtf 现象映射到「触发规则 + 安全写法」,例如 [] == ![] 走 ![] → false → 0 与 [] → "" → 0 的强制链,对策是永远用 ===;0.1 + 0.2 !== 0.3 是浮点二进制精度,用整数运算或 toFixed 比较。
  • 卡点自救:复杂表达式先拆步 console.log 类型与值;再判断是类型、作用域还是异步顺序三类之一,查表对照;用最小片段在控制台复现,确认规则而非猜答案。
  • 学习节奏:每个例子必须先预测输出、再看解释;在职可每天 3 个 wtf + 2:1 复习,冲刺面试可按「转换 / 作用域 / 异步」分轮刷题。

边界与注意

规则以 ECMAScript 规范为准,极端边界在不同引擎上可能略有差异。本技能目标是读懂他人代码、避开坑,不鼓励用怪异写法炫技;面试表现因人而异,底层理解需要你自己坚持「预测 → 验证」的闭环。

使用场景

  • Code Review 里同事写了 `==` 和隐式转换,你需要指出风险并建议改成 `===` 或显式 `Number()`
  • 面试前刷「`setTimeout` 和 `Promise` 谁先打印」这类输出顺序题,要能先写出顺序再对照事件循环
  • 维护老项目里 `for` 循环绑 `setTimeout` 只输出最后一个 `i`,要定位是 `var` 闭包问题并改成 `let` 或 IIFE
  • 从对象上解构方法当回调传入,运行时报错或 `this` 丢失,要判断隐式绑定丢失并用 `bind`/箭头函数修复

适合人员

  • 维护含大量 `==` 与老式回调的前端/全栈工程师,需要在改 bug 时快速对上强制转换规则
  • 两周内要面字节/美团等前端岗、题库里有 `[]==![]`、浮点、`typeof null` 的候选人
  • 从 Java/Go 转 Node 或浏览器脚本的后端,第一次在异步与闭包上踩坑、希望用「拆步 log」自救的人
  • 带 junior 做 JS 模块的 Tech Lead,希望用统一「现象→规则→安全写法」表做 onboarding 而非堆链接