JavaScript的诞生

138 阅读2分钟
  1. 设计JavaScript的初衷是“看上去与Java足够相似,但是比Java简单,使非专业的网页作者也能很快上手”,于是34岁的程序员Brendan Eich仅用10天就把JavaScript设计出来了。由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?

  2. JavaScript的设计特点:JavaScript同时结合了函数式编程和面向对象编程的特点,之前没有这样的先例可以参考,迄今为止,JavaScript仍然是世界上唯一使用Prototype继承模型的语言。

  3. JavaScript的设计缺陷:

  • 不适合开发大型程序:JS没有名称空间(namespace),很难模块化。
  • 非常小的标准库
  • null和undefined
    null属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。两者含义不同,但很容易混淆,在编程实际中null几乎没用,根本不应该设计它。
  • 全局变量难以控制
    JS的全局变量在所有模块中都是可见的,任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。
  • 自动插入行尾分号
  • 加号运算符
    +号作为运算符,有两种含义,既可以表示数字与数字的和,也可以表示字符与字符的连接。这样的设计不必要地加剧了运算的复杂性,完全可以另外设计一个字符连接的运算符。
  • NaN
    是一种数字,表示超出了解释器的极限,与其这样设计,不如解释器直接报错。
  • 数组与对象的区分
    JS的也数组也属于对象(object),所以要区分一个对象是否是数组很麻烦,
  • ==和===
    ==用来判断两个值是否相等,当两个值类型不同时,会发生自动转换,得到的结果非常奇怪。因此,任何情况都应该使用“===”(精准判断)比较符。
  • 基本类型的包装对象
    JS有三种基本数据类型:字符串、数字、布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。但是,与基本数据类型对应的对象作用很小,造成的 混淆很大。