JavaScript
JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。它支持面向对象编程,命令式编程,以及函数式编程。JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新,交互式的地图,2D/3D 动画,滚动播放的视频等等。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如 Node.js、 Apache CouchDB 和 Adobe Acrobat。
JavaScript 的标准是ECMA国际组织发布的 ECMAScript 。截至 2012 年,所有的现代浏览器都完整的支持 ECMAScript 5.1。
不要将 JavaScript 与 Java 混淆。虽然“Java”和“JavaScript”都是 Oracle 公司在美国和其他国家注册(或未注册)的商标,但是这两门语言在语法、语义与用途方面有很大不同。
简介
不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器变得强大,现在的程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖JavaScript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。且在近几年中,Node.js的出世,让JavaScript也具有了一定的服务器功能。
时间轴
- 1995年,网景招募了布兰登·艾克,目标是把Scheme语言嵌入到Netscape Navigator浏览器当中。但更早之前,网景已经跟昇阳合作在Netscape Navigator中支持Java,这时网景内部产生激烈的争论。
- 1995年5月,艾克仅花了十天时间就把原型设计出来了。最初命名为Mocha
- 1995年9月,在Netscape Navigator 2.0的Beta版中改名为LiveScript
- 1995年12月,Netscape Navigator 2.0 Beta 3中部署时被重命名为JavaScript,当时网景公司与昇阳电脑公司组成的开发联盟为了让这门语言搭上Java这个编程语言“热词”,因此将其临时改名为JavaScript,日后这成为大众对这门语言有诸多误解的原因之一。
- 1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。
- 1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262。JavaScript成为了ECMAScript最著名的实现之一。
- 2012 年,所有的现代浏览器都完整的支持 ECMAScript 5.1,旧版本的浏览器至少支持 ECMAScript 3 标准。
- 2015年6月17日,ECMA国际组织发布了 ECMAScript 的第六版 ,该版本正式名称为 ECMAScript 2015,但通常被称为 ECMAScript 6 或者 ES6。自此,ECMAScript 每年发布一次新标准。
- 2018年6月,发布ECMAScript 2018 (ECMAScript 9)。
- 2019年6月,发布ECMAScript 2019 (ECMAScript 10)。
- 2020年6月,发布ECMAScript 2020 (ECMAScript 11)。
提前了解
学习JavaScript 知识,应当提前了解:
基础
了解更多 >> MDN文档:JavaScript 第一步
变量
了解更多 >> MDN文档:JavaScript 第一步 - 变量
数据类型
流程控制
JavaScript 提供一套灵活的语句集,特别是控制流语句,你可以用它在你的应用程序中实现大量的交互性功能。
了解更多 >> MDN文档:JavaScript 指南 - 流程控制与错误处理
if...else 条件判断
条件判断语句指的是根据指定的条件所返回的结果(真或假或其它预定义的),来执行特定的语句。当一个逻辑条件为真,用if语句执行一个语句。当这个条件为假,使用可选择的 else 从句来执行这个语句。其中语句else是可选。if 语句如下所示:
if (条件) { 当条件为真的时候,执行的语句; } else { 当条件为假的时候,执行的语句; }
你也可以组合语句通过使用 else if
来测试连续多种条件判断。按顺序来执行条件判断,当某个条件为真执行该部分语句或者执行else语句就退出该if语句。就像下面一样:
if (条件1) { 当条件1为真的时候,执行的语句; }else if (条件2) { 当条件1为真的时候,执行的语句; }else if (条件n) { 当条件1为真的时候,执行的语句; }else { 上述条件都为假时,执行的语句; }
下面这些值在条件中将被计算出假(false) :
- false
- undefined
- null
- 0
- NaN
- 空字符串("")
当传递给条件语句所有其他的值,包括所有对象会被计算为真 。
switch 条件判断
switch 语句允许一个程序求一个表达式的值并且尝试去匹配表达式的值到一个 case 标签。如果匹配成功,这个程序执行相关的语句。如果都匹配不到,则执行default语句。default
语句通常出现在switch语句里的最后面,当然这不是必须的。 switch 语句如下所示:
switch (表达式的值) {
case 值1: 表达式的值与值1相等时,执行的语句; break; case 值2: 表达式的值与值2相等时,执行的语句; break; case 值n: 表达式的值与值n相等时,执行的语句; break; default: 表达式的值与上述值都不相等时,执行的语句; break;
}
break
语句是可选的,与每个 case 语句相关联,用于在匹配的语句被执行后程序可以跳出 switch
语句。 如果break不添加,则程序将继续执行switch语句中的下一条语句。
for 循环
while 循环
break 和 continue
错误处理
了解更多 >> MDN文档:JavaScript 指南 - 流程控制与错误处理
异常类型
抛出异常 throw
异常处理 try...catch
Error 对象
对象
在 JavaScript 中,大多数事物都是对象, 从作为核心功能的字符串和数组,到建立在 JavaScript 之上的浏览器 API 。对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)。
了解更多 >> MDN文档:JavaScript 对象
资源
官网
- ECMA国际组织:Standard ECMA-262 - ECMAScript
- ECMA国际组织:Standard ECMA-262 - ECMAScript 10 技术规范
- ECMA国际组织:Standard ECMA-262 - ECMAScript 5.1 技术规范