JavaScript 官网

Kindly note that the normative copy is the HTML version; the PDF version has been produced to generate a printable document.

This 13th edition has been prepared under the Ecma RF patent policy.

Please note that for ECMAScript Edition 4 the Ecma standard number “ECMA-262 Edition 4” was reserved but not used in the Ecma publication process. Therefore “ECMA-262 Edition 4” as an Ecma International publication does not exist.

The latest drafts are available at: https://tc39.github.io/ecma262/. Reporters should generally only file bugs if the bug is still present in the latest drafts.

Made with ♥ in Redmond, Boston, SF & Dublin

Microsoft Logo

© 2012-2022 Microsoft
Privacy

Using TypeScript

  • Get Started
  • Download
  • Community
  • Playground
  • TSConfig Ref
  • Why TypeScript
  • Design
  • Code Samples

    JavaScriptTypeScript

    See how TypeScript improves day to day working with JavaScript with minimal additional syntax.

    JavaScript Essentials

    1. Hello World
    2. Objects and Arrays
    3. Functions
    4. Code Flow

    Functions with JavaScript

    1. Generic Functions
    2. Typing Functions
    3. Function Chaining

    Working With Classes

    1. Classes 101
    2. This
    3. Generic Classes
    4. Mixins

    Modern JavaScript

    1. Async Await
    2. Immutability
    3. Import Export
    4. JSDoc Support

    External APIs

    1. TypeScript with Web
    2. TypeScript with React
    3. TypeScript with Deno
    4. TypeScript with Node
    5. TypeScript with WebGL

    Helping with JavaScript

    1. Quick Fixes
    2. Errors

    Explore how TypeScript extends JavaScript to add more safety and tooling.

    Primitives

    1. Any
    2. Literals
    3. Union and Intersection Types
    4. Unknown and Never

    Type Primitives

    1. Tuples
    2. Built-in Utility Types
    3. Nullable Types

    Meta-Types

    1. Conditional Types
    2. Discriminate Types
    3. Indexed Types
    4. Mapped Types

    Language

    1. Soundness
    2. Structural Typing
    3. Type Guards
    4. Type Widening and Narrowing

    Language Extensions

    1. Enums
    2. Nominal Typing
    3. Types vs Interfaces

Community

  • Get Help
  • Blog
  • GitHub Repo
  • Community Chat
  • @TypeScript
  • Stack Overflow
  • Web Repo

Flash背后的ActionScript曾经流行过一阵子,不过随着移动应用的兴起,没有人用Flash开发手机App,所以它目前已经边缘化了。相反,随着HTML5在PC和移动端越来越流行,JavaScript变得更加重要了。并且,新兴的Node.js把JavaScript引入到了服务器端,JavaScript已经变成了全能型选手。

JavaScript一度被认为是一种玩具编程语言,它有很多缺陷,所以不被大多数后端开发人员所重视。很多人认为,写JavaScript代码很简单,并且JavaScript只是为了在网页上添加一点交互和动画效果。

但这是完全错误的理解。JavaScript确实很容易上手,但其精髓却不为大多数开发人员所熟知。编写高质量的JavaScript代码更是难上加难。

一个合格的开发人员应该精通JavaScript和其他编程语言。如果你已经掌握了其他编程语言,或者你还什么都不会,请立刻开始学习JavaScript,不要被Web时代所淘汰。

等等,你会问道,现在有这么多在线JavaScript教程和各种从入门到精通的JavaScript书籍,为什么我要选择这个教程?

原因是,这个教程:

是JavaScript全栈教程!

可以在线免费学习!

可以在线编写JavaScript代码并直接运行!

// 直接点击Run运行
----
alert('我要学JavaScript!');

不要再犹豫了,立刻从现在开始,零基础迈向全栈开发工程师!

关于作者

廖雪峰,十年软件开发经验,业余产品经理,精通Java/Python/Ruby/Visual Basic/Objective C等,对开源框架有深入研究,著有《Spring 2.0核心技术与最佳实践》一书,多个业余开源项目托管在GitHub,欢迎微博交流:

JavaScript(JS)是一种具有函数优先特性的轻量级、解释型或者说即时编译型的编程语言。虽然作为 Web 页面中的脚本语言被人所熟知,但是它也被用到了很多非浏览器环境中,例如 Node.js、Apache CouchDB、Adobe Acrobat 等。进一步说,JavaScript 是一种基于原型、多范式、单线程的动态 (en-US)语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

JavaScript 的动态特性包括运行时对象的构造、变量参数列表、函数变量、动态脚本创建(通过 eval)、对象内枚举(通过 for...inObject 工具方法)和源代码恢复(JavaScript 函数会存储其源代码文本,可以使用 toString() 进行检索)。

本部分文档将专注于 JavaScript 语言本身,而非局限于网页或其他运行环境。想要了解网页中特有的 API,请参考 Web API 以及 DOM。

ECMAScript 语言规范(ECMAScript Language Specification)(ECMA-262)和ECMAScript 国际化 API 规范(ECMAScript Internationalization API specification)(ECMA-402)是 Javascript 的标准。当某个 ECMAScript 新特性的提案已经被一些浏览器实现时,MDN 上的文档或示例就可能会涉及到这些新特性。大多数时候,处在 stages 3 和 4 的新特性会被收录到文档中,且收录时间通常早于其正式发布的时间。

不要将 JavaScript 与 Java 编程语言混淆——JavaScript 不是“解释型 Java”。虽然“Java”和“JavaScript”都是 Oracle 公司在美国和其他国家注册(或未注册)的商标,但是这两门语言在语法、语义与用途方面有相当大的不同。

JavaScript 的核心语言特性(大部分是纯 ECMAScript)的文档包括以下内容:

  • JavaScript 指南
  • JavaScript 参考

有关 JavaScript 规范和相关技术的更多信息,请参阅 JavaScript 技术概述。

想成为一名前端网页开发人员吗?

为了帮助你实现这个目标,我们总结了一条包含所有必要信息的学习路线。

从这里起步

教程

借助指南和教程来学习如何用 JavaScript 编程。

对于完全的初学者

如果你想学习 JavaScript,却从未接触过 JavaScript 或编程,你可以投入到我们的 JavaScript 主题学习区。下面列出了这部分的所有章节:

JavaScript 第一步

回答了一些基本问题,比如“JavaScript 是什么?”、“它长什么样子?”、“它可以用来做什么?”等,同时还谈及了如变量、字符串、数值、数组等 JavaScript 的关键特性。

JavaScript 基本结构

继介绍了 JavaScript 关键的基本特性后,我们需要关注常见的代码组成部分,如条件语句、循环、函数、事件等。

介绍 JavaScript 对象

如果你想进一步使用它撰写更有效率的代码,理解 JavaScript 面向对象的特性是很重要的,因此我们提供了该模块来帮助你理解它。

异步 JavaScript

介绍异步 Javascript,解释为什么这个特性是重要的,以及如何借助这个特性,有效解决诸如从服务器抓取资源这类潜在的阻塞操作。

客户端 web API

了解 API 是什么,以及如何使用那些在开发工作中常见的 API。

JavaScript 指南

JavaScript 指南

一份更详尽的 JavaScript 指南,适用于有过 JavaScript 或其他语言编程经验的读者。

中级内容

理解客户端 Javascript 框架

作为现代前端 Web 开发中不可或缺的一部分,Javascript 框架给开发者提供了一套经过验证的工具,用来构建可扩展的交互式 Web 应用。在你移步一系列涵盖了当前流行前端框架的教程前,这部分内容提供了一些基础的背景知识,包括这些客户端框架是如何工作的,以及它们如何与你现有的工具集相配合。

重新介绍 JavaScript

给那些 认为自己了解 Javascript 的朋友们准备的 JavaScript 概述。

JavaScript 数据结构

概述 JavaScript 中涉及的数据结构。

相同、相等的比较性判断

JavaScript 提供了三种比较操作符,包括严格比较操作符===和非严格的比较操作符 ==,以及 Object.is() 方法。

属性的可枚举性和所有权

不同的逐个访问一组对象属性的方法对可枚举性和属性所有权的处理。

闭包

闭包由一个函数与其本身所被定义的词法环境的结合而成。

高级内容

继承和原型链

基于原型继承被外界广泛地误解与低估,这一版块对基于原型的继承作了阐述。

JavaScript 类型化数组

Javascript 类型化数组提供了操作原始二进制数据的机制。

内存管理

JavaScript 中的内存生命周期和垃圾回收机制。

并发模型以及事件循环

JavaScript 具有基于“事件循环”的并发模型。

参考

浏览完整的 JavaScript 参考文档。

标准对象

例如 ArrayBooleanDatefor...in0、for...in1、for...in2、for...in3、for...in4、Objectfor...in6、for...in7、for...in8、for...in9、Object0 、Object1 等标准内置对象。

表达式和运算符

运算符的作用Object2、Object3、Object4、Object5,运算符优先级,以及其他运算符。

语句和声明

了解 Object6、Object7、Object8、Object9、toString()0、toString()1、toString()2、toString()3、toString()4 以及其他语句和关键字的作用。