00:06
上集说到了script,这是一种由微软开发的基于类和有静态类型约束的面向对象编成语言。作为javascript的一个超级,一方面用typescript编写的程序可以被编译为JS,而所有JS程序也都可以直接被typescript兼容。typescript这个命名不但突出了它强类型的技术特征,也借用了typescript这个既有的英文单词,它表示用打字机等输出的打印稿,特别是有着手稿复制键的含义,也算是在语义上呼应了和javascript之间的关系吧。这就有必要说说javascript的来历了。1995年4月,当时网页浏览器领域的领导者王景公司雇佣了34岁的程序员brand act,他们本来希望对函数式编程颇为擅长的A可以把当时现长的函数式编程STEM引入neca navigator浏览器,从而一方面解决当时浏览器中缺乏用户交互手段的问题,主要还是用来应对以互联网为卖点的微软WINDOWS95系统的冲击my friends。
01:07
You know STEM browser,也就是在童年,整个it界的目光都聚集到了公司刚刚推出的Java。这种语言号称可以一次编写到处运行,这让王景的高层也很是动心。到了5月23日,联合创始人马克安德森还联合了s micro system科学办公室主任约翰盖奇,宣布将Java引入necape navigator,同时对IP开发的新语言也甚至加上了一条必须足够像Java的要求。马克安德森甚至把新的语言命名为Mo卡。与Java类似,Mo卡也是一种以产地命名的咖啡va。和所有接到古怪开发需求的程序员一样,艾克既出头又兴奋,它夜以继日的工作,只花了十天就快速完成了新语言的开发任务。这是一种可以直接嵌入HTML文档,且无需编译就能被浏览器直接处理。
02:07
语言有着和C相似的语法借鉴、Java的数据类型和内存管理、和self类似的原型继承机制,以及和STEM一样为函数赋予了一等公民的地位。一个月之后,处于市场营销方面的考虑,网警又把它改名为可突出其动态特性的live script,并在1995年9月,随着netcape navigator一定发布,此时的sun公司也开始担心同时出现在浏览器中的Java APP和live script会被用户视作竞争对手,从而对自家技术的普及产生变数。几番纠结和交涉之后,在当年12月发布的第三个版本中,Script终于更名为了javascript,虽然除了看起来像之外,它既不能和Java共享代码库,在语言核心方面也完全不同,新名字无疑达到了一批效果,这也导致了接下来的若干年中,JS开发者时不时会收到类似招聘专业Java编程岗位的邮件。总之,严格来说,Javascript是sun拥有的一个商标,用以描述。
03:07
实现的这种脚本语言时过境迁,随着贝Oracle的收购以及ne scape演变成了Mo,现在可以简单理解为Mo从Oracle那里获得许可证,从而可以使用javascript作为一个商标名称。1996年11月,网警公司将javascript提交给首字母缩写为ecma的欧洲计算机制造商协会的标准化组织。第一个被采纳的版本是1997年6月的艾克玛262。符合艾克玛262标准的脚本语言就被称为艾克玛script。该标准由第39号技术专家委员会,也就是大家熟知的TC39负责制定,其成员还包括微软、谷歌等大公司。但微软一开始并没有直接拥抱javascript,而是遵循script的规范,实现了一种叫jscript的动态脚本语言。这个命名只是因为微软想避免与3MICRO system产生商标上的纠纷问题。jscript最初随着Internet3.01996年8月发布,我们在谈论IE3至IE9,甚至早期的edge浏览器中的javascript的时候,可以说实际上指的都是script,后来也被Windows script host和ASP所支持,Jscript还能在Windows CE系统上运行,当时大量的PDA手持终端产品,包括2009年初上。
04:21
指的魅族的第一款智能手机魅族M8用的就是Windows c1系统j script和从netscript navigator发展下来的javascript一脉相承,可以认为是诸多X方言中最接近的良知。李木勺同志,李慕勺同志,大哥,你叫我刷的吧,把玉气叫我刷的说那勺子啊哈呃,不光是微软,各家浏览器厂商都努力的往自家的产品中塞入私有API,比如在IE11之前,J script还不同程度的支持条件编译,他允许程序员在块注释中有选择的执行代码,这看起来是对amascript标准的有意扩展,就导致了同样的脚本无法在其他浏览器中被正确执行,标准的不统一也引发了多次浏览器大战。经过20多年的发展,Javascript日益成为最受欢迎的编程语言之一,但鉴于其短暂的创建过程,天生还是有很多不完善。
05:21
的地方。比如作为一种解释性的脚本语言,无法在它被运行前进行静态检查,这可能会导致很多代码质量问题,看着不顺眼但又干不掉。很多对JS的改良方案应运而生。比如可以被编译成javascript的coffee script的语言,它借鉴了rub的很多特性,比如用缩进而非括号表示语法层次,蒋新的版本copy script two还支持了A和DSX等新的ES6特性。还有closure script同样是一种目标为JS的Google closure语言编辑器,或者script也是一种可编译为JS的强类型且函数式的编程语言,或者是在浏览器中。随着移动互联网的普及,Javascript也被广泛的应用于近年来火热的混合式开发,基于web view的网页套壳式开发,虽然实现起来简单,但性能和体验都往往都有不足。一种叫做nativescript的跨端开发技术,则可以在使用view等web开发技术站的同时,直接由APP内部的虚拟机来解释javascript,并映射为原生视图,最终生成。
06:21
IOS或安卓的原生APP,以上几种script虽然本身算不得script的实现,其编译目标或开发脚本还都是如假包换的javascript。即便没有用过这些语言,但凡配置过一些script或by.js的开发者,对ES3ES5E6等版本一定有印象。但是,呃,ES4去哪儿了呢?啊。
我来说两句