章节索引 :

什么是 JavaScript

JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。(MDN)

JavaScript 是一种编程语言,主要参与构建 Web 前端应用。

1. JavaScript 的由来

早期的浏览器是不具备与用户交互能力的,可以想象一下,在那个电话拨号上网的年代,带宽只有 56Kbps,也就是意味着标准最高下载速率只有 8KB/s。

在这个速度下,表单提交就是噩梦般的存在。

例如报名考试,就需要填写非常多内容,当用户花了十几分钟找各种资料填写表单后,点击提交就要等待十几秒甚至更多。

假如这时表单信息出错,如身份证没核对仔细少了一位,整个页面就会做刷新操作,表单需要重新填写。

这是一个比较典型的场景。当时最火的浏览器 Navigator 的开发公司 netscape 就因这些问题,急需一个浏览器使用的脚本语言,让运行在浏览器上的网页可以做一些交互。

netscape 因为有这个需求,招聘了 Brendan EichBrendan Eich 进公司后就开始研究使用 Scheme 语言作为在网页中使用的脚本语言的可能性。

但是由于当时 Java 爆火,netscape 又在于开发了 Java 的 Sun 公司合作,就想让这个脚本语言要足够像 Java,但是又要比 Java 简单。

然后 Brendan Eich 就被指定开发这个“简易 Java”。

图片描述

Brendan Eich

一段时间之后 JavaScript 也就诞生了。

后续 netscapeJavaScript 交给了 ECMA 组织进行标准化,编号为 262,也就是说现在的 JavaScript 实际上是 ECMA-262 标准的实现。

2. 与 Java 的区别

通过JavaScript的由来可以知道,两个语言本质上没有太大的关系,仅仅只为了让他们像,才让 JavaScript 的名字中有了 Java ,才让他的内部的一些设计机制像 Java

事实上 JavaScript 上在设计上还融合了C语言的语法,Self语言的原型设计等。

3. JavaScript 的主要应用

以下列举的各个场景不仅仅是需要掌握 JavaScript ,还需要很多知识点与技术栈来共同协作完成,但是 JavaScript 是必不可少的技术栈。

3.1 网页开发

网页开发的基本三大件为 HTML、CSS、JavaScript,如果将 HTML 比作骨架,CSS 比作皮肤,那 JavaScript 就是可以让骨架动起来,改变皮肤性状的存在。

现代的前端应用离不开 JavaScript ,随着浏览器的性能越来越好,产品交互越来越复杂,JavaScript 的地位也越来越高。

表单验证、动画效果甚至 3D 应用,均可以由 JavaScript 来完成。

使用 WebGL 制作的 3D 应用,可以直接运行在现代浏览器

3.2 服务端应用开发

2009 年发布 Node.js 的发布,意味着前端程序员可以用较低的成本跨入服务端开发。

Node.js 提供了开发服务端所需要的特性,如 HTTP 服务、本地文件读写操作等。

开发者可以使用 JavaScript 语言开发 Node.js 应用。

图片描述

Node.js

3.3 桌面应用开发

Electron 是由 Github 开发的,可以使用 HTML、CSS、JavaScript 来构建桌面应用的开源库。

使用Electron就可以让前端开发者进行桌面端应用的开发。

Visual Studio CodeAtomSkype 等应用都是使用 Electron 开发的。

图片描述

Electron

3.4 移动端应用开发

移动端应用也可以使用 JavaScript 进行开发,如 React Native 或者 Weex 等框架。

图片描述

Weex 框架

4. 适合群体

本篇 Wiki 主要为 ECMAScript262 第五版内容,适合初学者学习或者进行知识点查阅。

5. 前置知识

章节中的例子可能会涉及部分 HTMLCSS 的知识点,所以需要了解或者掌握一些 HTMLCSS 相关的内容作为前置知识。

前置知识
什么是JavaScript 开发与学习环境准备 调试方案
基础
JavaScript 变量 JavaScript 数据类型 JavaScript if 语句 JavaScript for 语句 JavaScript 算数运算符 JavaScript 比较运算符 JavaScript 逻辑运算符 JavaScript 表达式 JavaScript 函数 JavaScript 对象 JavaScript 字符串 JavaScript 数字 JavaScript 数组 JavaScript switch 语句 JavaScript while 语句 JavaScript break与continue JavaScript with document.cookie
内置对象
JavaScript Function JavaScript Math JavaScript Date JavaScript RegExp JavaScript JSON
JavaScript 与 DOM
什么是DOM DOM和JavaScript的关系 获取和操作 DOM 节点 JavaScript DOM与事件 JavaScript DOM 事件绑定 JavaScript DOM 事件对象 JavaScript DOM 事件流 JavaScript DOM 事件优化 JavaScript DOM 自定义事件
表单处理
使用 JavaScript 校验表单
BOM
BOM window 对象 常用的 BOM 相关对象 BOM 常用属性和方法
AJAX
JavaScript AJAX
进阶知识
JavaScript 异常处理 JavaScript 三元运算符 JavaScript 逗号操作符 JavaScript void JavaScript typeof JavaScript delete JavaScript debugger JavaScript getter &setter JavaScript 原型 JavaScript new操作符和构造函数 JavaScript instanceof JavaScript this JavaScript 严格模式 JavaScript 作用域 JavaScript 闭包 JavaScript 变量提升 JavaScript 对象包装器
常用库
jQuery Lodash moment.js swiper
进阶指南
ECMAScript6 Node.js Babel CSS 预处理器 代码规范 TypeScript Web Components 小程序 Vue / React / Angular JavaScript 关键字
常见疑点与误区
分号问题 对象属性访问问题 this 使用问题 浮点数精度问题 独一无二的 NaN 避免全局污染 控制台观察对象问题 根据环境选择语言特性
扩展
相关资源