JavaScript是网页的执行引擎,负责交互与动态功能;浏览器通过script标签加载执行,推荐defer/async避免阻塞;DOM操作需确保元素已加载;fetch替代XHR但需手动处理凭证和错误;真实项目难点在于时机、状态与错误边界控制。

JavaScript 不是网页的装饰品,它是让网页真正“活起来”的执行引擎——没有它,表单不能实时验证、按钮点击没反应、页面切换要整页刷新。
JavaScript 怎么被浏览器执行
浏览器加载 HTML 时遇到 标签(无论内联还是外部文件),会暂停 HTML 解析,下载并立即执行 JS 代码。现代做法推荐用 defer 或 async 属性避免阻塞:
-
defer:脚本延迟到 HTML 解析完成后再执行,且按顺序执行 -
async:脚本异步下载,下载完立刻执行,不保证顺序(适合独立逻辑,如统计脚本) - 不加属性:默认同步阻塞,最慢也最危险
DOM 操作为什么常出错
常见错误是脚本在元素还没加载出来时就去操作它,比如在 里写 document.getElementById('btn'),结果返回 null。解决方式有三种:
- 把
放在前(最简单可靠) - 监听
DOMContentLoaded事件:document.addEventListener('DOMContentLoaded', () => { ... }) - 用
$(document).ready()?那是 jQuery 的写法,原生 JS 不需要额外库
为什么 fetch 替代了 XMLHttpRequest
fetch 是更简洁、基于 Promise 的网络请求接口,但默认不带 cookie,也不自动拒绝非 2xx 状态码:
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。《php中级教程之ajax技术》带你快速
立即学习“Java免费学习笔记(深入)”;
- 要发带凭证的请求,必须显式加
credentials: 'include' -
fetch(url).then(res => { if (!res.ok) throw new Error(res.status) })才能捕获 404/500 - IE 完全不支持
fetch,需用XMLHttpRequest或引入 polyfill - 上传文件时,
fetch配合FormData比 XHR 更直观
真实项目里,JS 的复杂度不在语法,而在时机控制、状态同步和错误边界——比如用户快速连点两次提交按钮,或网络请求中途页面跳转,这些场景比学会 for...of 更容易导致线上问题。










