1.JavaScript概念
JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。它已经由ECMA(欧洲计算机制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。 ——摘自维基百科
2.JavaScript的诞生
首先需要了解它的历史背景:
1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。
在网景公司和SUN公司联合共同推行一种叫“JAVA+script”脚本语言的时候,一位名叫Brendan Eich的程序员登场了,也就是中文说的JavaScript之父布兰登。1995年4月,网景公司录用了他。
网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。而Brendan Eich的主要方向和兴趣是函数式编程,Brendan Eich本人也是这样想的,以为进入新公司后,会主要与Scheme语言打交道。
1995年5月,网景公司做出了决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的网页作者也能很快上手。 然而Brendan Eich对Java并没有任何兴趣,为了应付公司安排的工作,只用10天时间就把JavaScript设计出来了。
当时他的设计思路如下:
- 借鉴C语言的基本语法;
- 借鉴Java语言的数据类型和内存管理;
- 借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
- 借鉴Self语言,使用基于原型(prototype)的继承机制。
由此可见,JavaScript语言实际上是两种语言风格的混合产物:(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
3.JavaScript的缺陷
由于该脚本的设计原由,想必也会出现一些缺陷,造成缺陷的客观原因主要有三方面:
1. 设计阶段过于仓促
2. 没有先例可参考
3. 过早的标准化
下面参考阮一峰总结的10个方面的缺陷,如有兴趣详细了解请参考末尾的地址:
- 不适合开发大型程序:很难模块化,也不利于模块化加载。
- 非常小的标准库:JavaScript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。
- null和undefined:两者非常容易混淆,但是含义完全不同。
- 全局变量难以控制:JavaScript的全局变量,在所有模块中都是可见的;任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。
- Javascript的所有语句,都必须以分号结尾。
- 加号运算符
- NaN:NaN是一种数字,表示超出了解释器的极限。
- 数组和对象的区分:由于JavaScript的数组也属于对象(Object),所以要区分一个对象到底是不是数组,相当麻烦。
- == 和 ===
- 基本类型的包装对象
看上去JavaScript还有很多缺陷,但随着互联网的发展,语言标准的改进,几乎所有网页都离不开它,绝大部分使用者都在用它开发各种新项目,所以前途还是一片光明
参考资料