JavaScript是浏览器中唯一能直接操作页面、响应用户、发起请求的编程语言;其核心难点在于状态管理、异步时序、错误恢复和跨浏览器兼容性。

JavaScript 不是“让网页动起来”的装饰性工具,它是浏览器里唯一能直接操作页面、响应用户、发起请求的编程语言。
为什么 document.getElementById 找不到元素?
常见错误是脚本在 HTML 元素加载前就执行了。比如把 <script> 放在 <head> 里,而目标 <div id="app"> 还没解析到。
- 最稳做法:把
<script>放在</body>前; - 或者用
DOMContentLoaded事件包裹操作逻辑; - 别依赖
window.onload——它等图片、样式表全加载完,太晚; - 现代写法也可加
defer属性:<script defer src="app.js"></script>。
addEventListener 和 onclick 有什么实际区别?
onclick 是 HTML 属性或 DOM 属性,只能绑定一个处理函数;addEventListener 支持多次调用、不同事件类型、更细粒度的控制(比如 { once: true })。
- 用
onclick:适合极简原型,但改起来容易覆盖旧逻辑; - 用
addEventListener:生产环境必须用,尤其要监听多个按钮、支持取消时; - 注意:动态插入的元素不会自动继承事件,得用事件委托(监听父级 + 判断
event.target); - 别忘了移除监听器——比如在单页应用切换页面时,避免内存泄漏。
为什么 fetch 请求后页面没更新?
因为 fetch 默认返回 Promise,不自动更新 DOM;而且它只在网络失败时 reject,HTTP 错误码(如 404、500)照样 resolve。
立即学习“Java免费学习笔记(深入)”;
- 必须用
.then()或async/await处理响应体; - 记得调用
response.json()(或text()),否则拿到的是 Response 对象,不是数据; - 检查
response.ok判断 HTTP 状态是否成功; - 更新页面要手动写,比如
document.querySelector('#result').textContent = data.message; - 别在
catch里只打印错误——用户看不到,得同步更新 UI 提示。
真正难的不是让元素动一下,而是状态管理、异步时序、错误恢复和跨浏览器行为差异。比如 iOS Safari 对 input 的 focus 行为、Chrome 对 IntersectionObserver 的触发时机,都可能让“动起来”的逻辑在某个设备上静止不动。











