Web API 是浏览器提供的接口集合,非 javaScript 语言内置;fetch、document、localStorage 等均属 Web API,由浏览器注入全局对象提供,而 js 引擎仅执行语法,不处理页面、网络等能力。

Web API 不是 javascript 语言的一部分,而是浏览器提供的、供 JS 调用的接口集合。你写的 fetch()、document.getElementById()、localStorage.setItem() 全部来自 Web API,不是 JS 引擎内置的。
Web API 和 JavaScript 引擎根本不是一回事
JavaScript 引擎(比如 V8)只管执行 JS 语法:变量、函数、循环、promise 等。它不理解“页面”“按钮”“网络请求”——这些能力全靠浏览器在 JS 运行时注入全局对象:window、document、navigator、fetch、setTimeout……它们才是 Web API 的入口。
- node.js 没有
document或fetch(原生),因为它没实现 Web API,只有 CommonJS / node.js API -
console.log看似“JS 自带”,其实是浏览器通过 Web API 注入的,不是语言规范要求的 - ES 规范只定义
Array.prototype.map这类东西;Element.addEventListener是 dom API,属于 Web 标准,但独立于 ES
最常误用的三个 Web API 场景
新手常以为“能写出来就能跑”,结果卡在时机、作用域或隐式转换上:
-
document.getElementById('myBtn')返回NULL?大概率是脚本执行时 DOM 还没加载完——把 JS 放在