最近公司招聘外包同事,在面试过程中,我发现一个问题:很多应试者其实对JavaScript这门语言本身认识不足!
例如,我会问一下,JavaScript的标准是什么?当前有哪些版本?很多应试者基本都答不上来。
很多非计算机专业的同学们,在转行前端开发的时候,基本都会去一些培训班,培训个一年半载,然后就出来找工作,但实际上JS基础能力都不够扎实。
这非常令人沮丧!
我个人认为,任何一个前端开发工程师,都应该花点功夫,先了解JavaScript语言本身,然后再结合CSS、HTML、DOM、BOM等技术栈进行实践。
JavaScript历史1994年,Netscape发布了Navigator浏览器0.9版,这是历史上第一个比较成熟的网络浏览器。
但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力,例如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断;如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。
因此,Netscape急需一种网页脚本语言,使得浏览器可以与网页互动。
当时就职于Netscape的工程师Brendan Eich负责开发这种新语言。
这门新语言最初被称为LiveScript,但因为当时Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此最终取名为JavaScript。
JavaScript 1.0获得了巨大的成功,Netscape随后在Netscape Navigator 3中发布了JavaScript 1.1。
随后,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。
在微软进入后,市面上有 3 种不同的 JavaScript 版本同时存在: JavaScript、JScript 以及ScriptEase。
当时JavaScript 并没有一个标准来统一其语法或特性,而这 3 种不同的版本恰恰突出了这个问题。
随着业界担心的增加,这个语言的标准化显然已经势在必行。
1996年11月,Netscape决定将JavaScript提交给欧洲计算机制造商协会(ECMA,European Computer Manufactures Association),希望这种语言能够成为国际标准。
ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括Netscape、Sun、Microsoft、Mozilla、Google等大公司。
1997年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。
ECMAScript 1.0
1997年6月,ECMAScript 1.0发布。
ECMAScript 2.0
1998年6月,ECMAScript 2.0发布。
ECMAScript 3.0
1999年12月,ECMAScript 3.0发布。
3.0是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了JavaScript语言的基本语法,以后的版本完全继承。
ECMAScript 4.02000年,ECMAScript 4.0开始酝酿。
2007年,ECMAScript 4.0草案发布,预计次年8月发布正式版本。
但是,各方对于是否通过这个标准,发生了严重分歧。
以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动。
以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。
2008年,ECMAScript 4.0被废弃。
由于对于4.0应该包括哪些功能,各方分歧太大,争论过于激烈,ECMA开会决定,中止ECMAScript 4.0的开发。
将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本。
由于会议的气氛,4.0项目代号起名为Harmony(和谐)。
会后不久,ECMAScript 3.1就改名为ECMAScript 5.0。
ECMAScript 5.0
2009年,ECMAScript 5.0正式发布。
2011年,ECMAscript 5.1发布,并且成为ISO国际标准,到了2012年底,所有主要浏览器都支持ECMAScript 5.1版的全部功能。
ECMAScript 6.0
2013年3月,ECMAScript 6.0草案冻结,不再添加新功能。
2013年12月,ECMAScript 6.0草案发布。
2015年6月,ECMAScript 6.0正式发布,并且更名为“ECMAScript 2015”。
这是因为TC39委员会计划,以后每年发布一个ECMAScirpt的版本,下一个版本在2016年发布,称为“ECMAScript 2016”。
从现在开始,新版本将按照ECMAScript+年份的形式发布。
ECMAScript 7.0
2016年6月,ECMAScript 2016草案冻结。
ECMAScript 8.0
2017年6月,ECMAScript 2017草案冻结。
这个版本包含了我们常说的async/await特性。
ES.Next
ES.Next,是一个动态名称,它指的是任何在下一个版本中写入的内容。ES.Next特性通常被称为提议(proposals),顾名思义,规范还没有最终确定。
总结综上,我们可以知道,ES3、ES5、ES6是现在主流的JavaScript标准规范,目前主流浏览器都已经实现了ES5全部特性,但一些比较古董的浏览器还只是支持到ES3,例如IE6、IE7、IE8等,这些浏览器在国内还是有一些市场份额,所以我们还能听到一些ES3的声音。。
但大部分情况下,我们还是在关注ES5、ES6(ES2015),由于主流浏览器还未完全ES6,所以一般情况下,我们基本都是用ES6开发,然后经过babel转换为ES5。
对于初学者,个人建议还是先了解ES5,熟练应用ES5全部特性,然后再考虑学习并使用ES6进行开发。
接下来就是学习并使用Babel,了解Babel工程化相关技能,将ES6转化为ES5,最终发布ES5代码上线。