JavaScript入门易但真写对难,因运行环境、隐式规则和调试方式独特;需关注执行时序、作用域、异步、hoisting、this、闭包、TDZ、DOM加载时机、事件委托、默认行为、类型松散及引用传递等核心陷阱。

JavaScript 不难入门,但容易在「看似会了」和「真能写对」之间卡住——问题不在语言本身,而在它运行的环境、隐式规则和调试方式和你以前学的编程语言完全不同。
为什么 console.log 输出和预期不一致?
这不是代码写错了,而是 JavaScript 的执行时序和作用域机制在起作用。比如异步操作、变量提升(hoisting)、this 绑定、闭包捕获的值,都会让 console.log 显示“奇怪”的结果。
- 遇到输出不对,先别改逻辑,用
debugger断点或浏览器 DevTools 的 “Sources” 面板单步执行 - 检查变量声明方式:
var有提升,let/const有暂时性死区(TDZ),直接访问会报ReferenceError - 异步回调里的
console.log一定晚于同步代码执行,哪怕它写在前面
addEventListener 绑了但没反应?
最常见原因是 DOM 元素还没加载完就执行了绑定代码,或者事件委托目标选错了。
- 确保脚本放在











