《大前端三问》 - 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
其实有上一节的历史大家就都知道什么回事了,我用自己的看法给大家捋一捋:
- 首先是网景先发明了JavaScript,实现在浏览器端搞一个编程语言。这个语言就像一个DSL特殊领域语言,网景自己定义语法、语义,自家浏览器解释运行,搞得非常之爽。然后学Java命了个名,叫JavaScript;
- 然后微软看人家就不爽了,自家IE怎能落后,于是山寨人家,搞了个VBScript,后进化为Jscript,然后两家语言虽然相象,但是又互不兼容。这个就忙坏了程序员了,尼玛一个特效现在要我写两份代码;
- 这个时候,标准制定砖家门就出来了。砖家门说:”好,现在大家都不要吵了,我东抄一点,西抄一点,再加点开源社区人人叫好的牛逼特性,制定个 ECMAScript标准,你们按我的语法、语义、Api搞之。谁都不许赖皮”。
- 结果呢,ECMA砖家门搞出了非常牛逼且不断发展的ECMAScript标准(从ECMAScript1现在已到ECMAScript7了,当你看到本文时可能都不知多大的版本号了)。然而这个标准太给力,很多浏览器厂家已经跑不过标准了(砖家果然不是吃素的)。
- 现在ECMAScript已成为不止适用于JavaScript的标准,它的野心已向”成为标准化脚本程序设计语言”迈进(可想ECMA的砖家们拿了工资尼玛还是交足货的)。比如Flash的ActionScript也是基于ECMAScript标准的。
因此我们知道了《ECMAScript X》是 “标准化脚本程序设计语言标准”,制定了标准化脚本语言因为具备的素质。JavaScript可以说是它的一个实现,加入了DOM、BOM等更适合其使用场景的特性。
所以,我们的学习路程有小小复杂化:
- 要学习JavaScript,学习Dom,Bom,等特性。
- Javascript毕竟只是一门语言,我们在结合它的一些实际的使用场景学习之,应用之(比如说一些前端框架、比如说NodeJS本地运行);
- 我们还要紧跟《ECMAScript X》(X代表最新版本号)标准,看看它的趋势是怎样,有哪些新特性,哪些新特性可以在哪些场景中使用之。 。。。
2 为什么使用JavaScript?
从第一节我们可以知道 JavaScript是一开始是设计来运行在浏览器上的脚本语言,用来加强浏览网页的体验。
实现这一目的的还有VBScript,Jscript等。(VBScript在我还是学生的时候,曾经还较常听说,但由于太傻X了,现在估计找不到两个人还在搞这个了。)所以可以说,现在Javascript在其领域上已一家独大,基本上没有和其它语言比较的必要了。
在NodeJS起来之后,现在JavaScript已经不仅仅局限运行在浏览器上了,有些服务器也可以使用这门语言搞起。所以可以说JavaScript的前途无可限量,说只会一门语言就实现全栈也不是完全痴人说梦。
3 JavaScript是怎样工作的?
要全面地了解JavaScript,这是后面章节的任务了,在这里我们可以大概从几个方面入手:
- 首先JavaScript是门编程语言,一门计算机编程语言要有的基本元素他都该具备;
- JavaScript是门脚本语言,具有脚本语言的一些特性。
在学习JavaScript之前弄明白这几点绝对不是浪费地间。
3.1 JavaScript是门编程语言
计算机编程语言要有的基本元素他都该具备:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
在爽爆天系列文章中,我将之划分为:
- 《数据结构与算法》 :程序就像搭积木。数据结构定义了这门语言有几种形状类型的积木;算法则规定了积木之间怎么搭、怎么组织(就像拼图的凹凸插槽、乐高的点阵插槽)。
- 《面向对象》:JavaScript努力地实现了面向对象的特性,也就是他较之其它几门Web脚本语言更受欢迎的一点。
- 《Dom与Bom》:这也是JavaScript上比较重要的特性
- 《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,包你爽翻天。