W3C与ES规范
一.W3C 规范 (World Wide Web Consortium)
1.1 什么是 W3C?
W3C 全称 World Wide Web Consortium (万维网联盟),是一个国际性的、致力于制定 Web 标准的组织。它的使命是确保 Web 的长期发展和互操作性。W3C 发布的规范被称为“推荐标准 (Recommendations)”,被广泛采纳和实现。
1.2 W3C 规范关注什么?
W3C 规范主要关注 Web 平台本身 的各个方面,包括内容的结构、表现、交互方式、设备访问以及可访问性。它定义了 Web 内容应该如何被创建、传输、解析、呈现和用户如何与之交互。简单来说,W3C 定义了 Web 页面的“是什么” 和 “长什么样”,以及它提供了哪些与用户或外部环境交互的 “接口”。
- 结构 (Structure):
- HTML (HyperText Markup Language): 定义网页内容的结构和语义,如
<div>
,<p>
,<a>
,<img>
等标签。 - XML (eXtensible Markup Language): 一种用于描述数据的标记语言,是许多其他 Web 技术的基础。
- HTML (HyperText Markup Language): 定义网页内容的结构和语义,如
- 样式与表现 (Style & Presentation):
- CSS (Cascading Style Sheets): 定义网页内容的视觉样式和布局,如颜色、字体、边距、定位等。
- 文档对象模型 (Document Object Model - DOM):
- DOM: 定义了 HTML 和 XML 文档的逻辑结构,以及如何通过编程语言(如 JavaScript)来访问和操作这些文档的元素、属性和内容。DOM 并不是一种编程语言,而是一个 API。
- Web API (Application Programming Interfaces):
- XMLHttpRequest (XHR): 允许网页在不刷新页面的情况下发送 HTTP 请求(AJAX 的基础)。
- Geolocation API: 获取用户地理位置信息。
- Web Storage API: 允许 Web 应用程序在客户端存储数据(localStorage, sessionStorage)。
- Web Components: 定义了创建可复用自定义元素的技术集(Custom Elements, Shadow DOM, HTML Templates, ES Modules)。
- 可访问性 (Accessibility):
- WCAG (Web Content Accessibility Guidelines): 确保残障人士也能访问和使用 Web 内容的指南。
- 图形与媒体 (Graphics & Media):
- SVG (Scalable Vector Graphics): 定义基于 XML 的二维矢量图形。
- WebM, HTML5 Video/Audio: 定义 Web 上的多媒体格式和播放。
总结: W3C 规范定义了 Web 页面的“骨架”、“皮肤”和“器官”,以及它们如何与外界交互。
二.ECMAScript (ES) 规范
2.1 什么是 ECMAScript?
ECMAScript (通常简称为 ES) 是由 Ecma International (欧洲计算机制造商协会) 通过其技术委员会 TC39 制定的一种 通用目的脚本语言的标准化规范。
2.2 ECMAScript 与 JavaScript 的关系?
- ECMAScript 是规范,JavaScript 是实现。
- JavaScript 是 ECMAScript 规范最著名、最广泛的实现。其他实现还包括 JScript (微软) 和 ActionScript (Adobe)。
- 当人们提到“JavaScript 的新特性”时,通常指的是 ECMAScript 规范中新增的语言特性(如 ES6/ES2015、ES2016 等)。
2.3 ES 规范关注什么?
ECMAScript 规范主要关注 脚本语言本身的核心能力。它定义了语言的内部逻辑、数据处理方式以及程序执行流程。它并不直接关心代码运行在什么环境(浏览器、服务器、嵌入式设备),而是提供了一套通用的编程能力。简单来说,ECMAScript 定义了 Web 页面的“大脑”和“神经系统”,即它如何进行计算、处理数据、存储信息和执行逻辑。
主要关注领域及示例:
核心语法 (Core Syntax):
- 定义了如何声明变量 (
var
,let
,const
)。 - 定义了基本数据类型(
Number
,String
,Boolean
,Object
,Array
,Symbol
,BigInt
,null
,undefined
)。 - 定义了各种操作符(算术
+
,-
,*
,/
;比较==
,===
,<
,>
;逻辑&&
,||
,!
等)。 - 定义了控制流程语句(
if/else
,for
,while
,do/while
,switch
)。 - 定义了函数如何定义和调用。
- 定义了如何声明变量 (
内置对象 (Built-in Objects):
ECMAScript 规范定义了一系列标准的内置对象,这些对象提供了语言本身自带的功能。
示例:
Object
,Array
,Function
: 语言的基础构造块。String
,Number
,Boolean
: 基本类型的包装对象,提供相关方法。Math
: 提供数学常量和函数。Date
: 处理日期和时间。RegExp
: 处理正则表达式。Promise
: 处理异步操作的标准方式 (ES6)。Map
,Set
,WeakMap
,WeakSet
: 新的数据结构 (ES6)。Symbol
: 唯一的、不可变的基本类型值 (ES6)。BigInt
: 支持任意精度的整数 (ES2020)。
语言特性 (Language Features):
类 (Classes - 语法糖)
模块 (ES Modules)
箭头函数 (Arrow Functions)
解构赋值 (Destructuring Assignment)
扩展运算符 (Spread/Rest Syntax)
异步编程 (Async/Await)
迭代器 (Iterators) 和 生成器 (Generators)
总结: ES 规范定义了 Web 页面的“大脑”和“神经系统”,即它如何思考、处理数据和执行逻辑。
三. 核心区别
特性 | W3C 规范 | ECMAScript (ES) 规范 |
---|---|---|
制定组织 | World Wide Web Consortium (万维网联盟) | Ecma International (欧洲计算机制造商协会) - TC39 |
关注焦点 | Web 平台 的结构、表现、API 和可访问性 | 脚本语言 的核心语法、语义和内置对象 |
定义内容 | HTML、CSS、DOM、Web API、SVG、WCAG 等 | 变量、函数、对象、数组、Promise、Async/Await 等 |
应用环境 | 主要用于 浏览器环境 (Web 页面) | 通用,可在浏览器、Node.js、Deno 等任何 JS 引擎中运行 |
角色比喻 | 定义了 Web 的“骨架”、“皮肤”和“器官” | 定义了 Web 的“大脑”和“神经系统” |