《大前端三问》 - JavaScript简介

1 什么是JavaScript ?

什么是JavaScript?他是用来做啥的?

其实,你都点进来看了,如果你连JavaScript是干啥的都不知道,那是不可能。我们还是谈谈JavaScript的历史,看看这个Web上游行的脚本语言是怎么发展起来的。

1.1 JavaScript 之前存在的问题

首先我们可以想像,在没有 JS 之前的互联网,人们看纯HTML实现的网页会存在啥问题:

1)频繁的网络通信等待;

想想看,一个注册页面,内有N个对话框。你每次都要填写完,提交到服务器,服务器进行校验之后,过N秒再返回给你告诉你你密码格式不对,请重填!好不容易折腾了几回,又返回告诉你用户名已有人用了!!我去~这简直要把人逼疯~

2)没有特效;

各种网页都是静态的(我说的是真的静态,一点动效都没得)。现在随便看一个网页,各种图片滚动、各种控件,如果没有JS,你要和这一切 say bye2~

1.2 JavaScript发展关键点(详细发展史兴趣童鞋自行维基之)

  • 1995年

所以,1995年,Netscape,就是牛逼一时的网景公司,发布了一种名为 LiveScript运行在浏览器上的脚本语言,为了让人们觉得这个语言不那么陌生,他们给这个脚本语言取了个名字JavaScript,因为当时Java工程师非常多,这样可以让他们觉得这门语言与自己更亲近~~(虽然两者并没有什么关系~)

  • 1997年

JavaScript是网景公司推出的,大家看到现在浏览器市场的乱象就可以猜出,虽然JavaScript技术一出后,大家都觉得爽,马上使自家的浏览器也支持之。但是,每家都非得添加一些与众不同的特性,这就导致了JavaScript的实现非常碎片化。

1997年,欧洲计算机制造商协会(ECMA,European Computer Manufacturers Association),指定 39 号技术委员会(TC39,Technical Committee #39) 负责”标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义”,这就是现在比较流行的 ECMAScript 标准的前身了。

ECMAScript的目的就是统一纷乱的现状,统一JavaScript语言的标准。它本身也在不断地发展: 从 ECMAScript1(第一版,1997年6月首次发行),到ECMAScript2、。。。。现在已经最新到ECMAScript 7了。不断地有很多新的特性加入其中。

1.3 JavaScript 与 ECMAScript

其实有上一节的历史大家就都知道什么回事了,我用自己的看法给大家捋一捋:

  1. 首先是网景先发明了JavaScript,实现在浏览器端搞一个编程语言。这个语言就像一个DSL特殊领域语言,网景自己定义语法、语义,自家浏览器解释运行,搞得非常之爽。然后学Java命了个名,叫JavaScript;
  2. 然后微软看人家就不爽了,自家IE怎能落后,于是山寨人家,搞了个VBScript,后进化为Jscript,然后两家语言虽然相象,但是又互不兼容。这个就忙坏了程序员了,尼玛一个特效现在要我写两份代码;
  3. 这个时候,标准制定砖家门就出来了。砖家门说:”好,现在大家都不要吵了,我东抄一点,西抄一点,再加点开源社区人人叫好的牛逼特性,制定个 ECMAScript标准,你们按我的语法、语义、Api搞之。谁都不许赖皮”。
  4. 结果呢,ECMA砖家门搞出了非常牛逼且不断发展的ECMAScript标准(从ECMAScript1现在已到ECMAScript7了,当你看到本文时可能都不知多大的版本号了)。然而这个标准太给力,很多浏览器厂家已经跑不过标准了(砖家果然不是吃素的)。
  5. 现在ECMAScript已成为不止适用于JavaScript的标准,它的野心已向”成为标准化脚本程序设计语言”迈进(可想ECMA的砖家们拿了工资尼玛还是交足货的)。比如Flash的ActionScript也是基于ECMAScript标准的。

因此我们知道了《ECMAScript X》是 “标准化脚本程序设计语言标准”,制定了标准化脚本语言因为具备的素质。JavaScript可以说是它的一个实现,加入了DOM、BOM等更适合其使用场景的特性。

所以,我们的学习路程有小小复杂化:

  1. 要学习JavaScript,学习Dom,Bom,等特性。
  2. Javascript毕竟只是一门语言,我们在结合它的一些实际的使用场景学习之,应用之(比如说一些前端框架、比如说NodeJS本地运行);
  3. 我们还要紧跟《ECMAScript X》(X代表最新版本号)标准,看看它的趋势是怎样,有哪些新特性,哪些新特性可以在哪些场景中使用之。 。。。

2 为什么使用JavaScript?

从第一节我们可以知道 JavaScript是一开始是设计来运行在浏览器上的脚本语言,用来加强浏览网页的体验。

实现这一目的的还有VBScript,Jscript等。(VBScript在我还是学生的时候,曾经还较常听说,但由于太傻X了,现在估计找不到两个人还在搞这个了。)所以可以说,现在Javascript在其领域上已一家独大,基本上没有和其它语言比较的必要了。

在NodeJS起来之后,现在JavaScript已经不仅仅局限运行在浏览器上了,有些服务器也可以使用这门语言搞起。所以可以说JavaScript的前途无可限量,说只会一门语言就实现全栈也不是完全痴人说梦。

3 JavaScript是怎样工作的?

要全面地了解JavaScript,这是后面章节的任务了,在这里我们可以大概从几个方面入手:

  1. 首先JavaScript是门编程语言,一门计算机编程语言要有的基本元素他都该具备;
  2. JavaScript是门脚本语言,具有脚本语言的一些特性。

在学习JavaScript之前弄明白这几点绝对不是浪费地间。

3.1 JavaScript是门编程语言

计算机编程语言要有的基本元素他都该具备:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

在爽爆天系列文章中,我将之划分为:

  1. 《数据结构与算法》 :程序就像搭积木。数据结构定义了这门语言有几种形状类型的积木;算法则规定了积木之间怎么搭、怎么组织(就像拼图的凹凸插槽、乐高的点阵插槽)。
  2. 《面向对象》:JavaScript努力地实现了面向对象的特性,也就是他较之其它几门Web脚本语言更受欢迎的一点。
  3. 《Dom与Bom》:这也是JavaScript上比较重要的特性
  4. 《ECMAScript》:刚介绍过,ECMAScript目标是”成为标准化脚本程序设计语言”,所以我们还是要紧跟之。

3.2 JavaScript是门脚本语言

  • 关于脚本语言

百度百科 维基百科介绍

我想说最核心的一点就是,脚本语言的特点就是不需要编译,直接可以运行。这给学习、调试带来的巨大的方便。

要用到这个特性我们在下一章将介绍 NodeJS,让JavaScript可以本地化运行,还提供了一个命令行

4 JavaScript除了在Web上兴风起浪,还能做些啥?

4.1 React

基于JavaScript的前端框架多如牛毛,个个都是天王巨星。React是我个人比较喜欢也是较流行的框架,在学习JavaScript基础的同时,大家可以在我的另一个系列文章爽爆天之React教程(未开始)体验一把激情。

4.2 NodeJS

现在不得不说下NodeJS,让javascript有了本地化执行的能力,这使之甚至可以在服务器端兴风起浪!详见我的另一个系列文章爽爆天之NodeJS教程(未开始)。可以让你爽个不行。

4.3 react-native

对,前端,后端,你会说JavaScript在客户端玩得转吗?我说能!!不信,你就进我的另一系列文章爽爆天移动开发之-ReactNative,包你爽翻天。

坚持原创技术分享,您的支持将鼓励我继续创作!