I:JS的历史
JavaScript最初由网景公司的Brendan Eich设计,最初将其脚本语言命名为LiveScript,其目的也只是作为网景旗下浏览器的一个插件。后来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java,但JavaScript的主要设计原则源自Self和Scheme。JavaScript与Java名称上的近似,是当时Netscape为了营销考虑与Sun微系统达成协议的结果。
II:JS的缺陷
一、JavaScript为什么有缺陷?
(1)设计时间过于仓促
由于网景最初的目的只是想制作一个自身浏览器的插件,还没预见到JavaScript在未来会如此风靡。设计者布兰登仅仅用了数十天便向公司交了差。
(2)没有参考对象
因为JavaScript同时结合了函数式编程和面向对象编程的特点,这导致JavaScript在当年没有任何“前辈”的经验可以借鉴参考,这导致在问题上没有先例可寻,解决问题困难重重。
(3)标准化时间太快
JavaScript由于在当时的风靡,导致他的发展可以说是飞速的。
1995年5月,设计方案定稿;10月,解释器开发成功;12月,向市场推出,立刻被广泛接受,全世界的用户大量使用;1996年8月,微软公司推出自己的脚本语言Jscript;同年的11月,网景公司决定申请JavaScript的国际标准;1997年6月,第一个国际标准ECMA-262正式颁布。
这前后仅仅两年的时间,JavaScript就从推出到了国际化。而JavaScript在其缺陷还未暴露的情况下过早的的国际化,导致今后的更改修正困难重重。
二、JavaScript的十大缺陷
1. 不适合大型开发
由于JavaScript没有名称空间很难模块化。没有如何将代码分布在多个文件的规范。允许同名函数的重复定义,后面的定义又能覆盖前面的定义,很不利于模块化加载。
2. 非常小的标准库
JavaScript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。
3. null和undefined
null属于对象的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。
4. 全局变量难以控制
JavaScript的全局变量,在所有模块中都是可见的;任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。
5. 自动插入行尾分号
Javascript的所有语句,都必须以分号结尾。但是,如果你忘记加分号,解释器并不报错,而是为你自动加上分号。有时候,这会导致一些难以发现的错误。
6. 加号运算符
+号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。
7. NaN
NaN是一种数字,表示超出了解释器的极限。
8. 数组和对象的区分
由于Javascript的数组也属于对象,所以要区分一个对象到底是不是数组,相当麻烦。
9. == 和 ===
==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。
10. 基本类型的包装对象
JavaScript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。