JavaScript 的诞生历程

200 阅读2分钟

创生的动机

自从1991年HTML的诞生和1993年CSS的诞生伊始,网页就以惊人的速度成长着。而那时由于网速非常慢(大概在3KB/s),每个在网页上提交表单的用户不得不在输错自己的邮箱号/账号/密码时等待好几分钟,用户体验极其恶劣,所以最开始为了实现用户在提交信息前检查账号格式的脚本语言JavaScript诞生了。诞生在1995年,由当时如日中天的浏览器公司网景Netscape中一位主要方向和兴趣是函数式编程的程序员BrendanEich所设计。由于设计时间非常仓促(10天左右),所以不够严谨,有很多失误。

JavaScript与Java的关系

用我们今天的话来讲,就是“蹭流量”。Java也诞生于1995年由Sun公司发明,他们大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。于是网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。

总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。因此,JavaScript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为"Java+Script"并不是偶然的。

几个JavaScript设计的缺陷

  1. 自动插入行尾分号

Javascript的所有语句,都必须以分号结尾。但是,如果你忘记加分号,解释器并不报错,而是为你自动加上分号。有时候,这会导致一些难以发现的错误。

比如,下面这个函数根本无法达到预期的结果,返回值不是一个对象,而是undefined。

function(){
    return
    {
        i=1
    };
}

原因是解释器自动在return语句后面加上了分号。

  1. =====

==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。

"" == "0" // false

0 == "" // true

0 == "0" // true

false == "false" // false

因此,推荐任何时候都使用===(精确判断)比较好。

  1. 不适合开发大型程序

Javascript没有名称空间(namespace),很难模块化;没有如何将代码分布在多个文件的规范;允许同名函数的重复定义,后面的定义可以覆盖前面的定义,很不利于模块化加载。