JavaScript历史学习总结

439 阅读2分钟

javascript历史

1994年网景公司,发布了 Netscape 浏览器,因此急需一门脚本语言,使得网页可以和人互动。

1995年网景公司,录用的 Brendan Eich,让他担任这门语言的设计师。

公司要求这门语言必须看上去“与java足够相似”,但要比java简单,要让非专业的网页制作者也能很快的上手。

但 Brendan Eich 对java一点兴趣也没有,他喜欢函数式编程,喜欢scheme语言。

他的设计思路大概是这样的:

  1. 借鉴c语言的基本语法
  2. 借鉴java的数据类型和内存管理
  3. 借鉴scheme语言,将函数提升到“第一等公民”的地位
  4. 借鉴self语言,使用基于原型prototype的继承机制。

总之javascript是实际上是两门语言风格的混合产物——简化的函数式编程和简化的面向对象编程。

于是为了应付公司的安排任务,他只用了10天的时间就将它设计出来了。

由于时间仓促,语言的设计有很多缺陷,导致用javascript写出来的程序混乱不堪。

javascript缺陷

nullundefined

只有在javascript这门语言中同时存在两个空。

nullundefined都表示不存在,用法都一样。

一般在定义基本类型时,没有赋值,会是undefined

let a 
console.log(a)      //undefined

定义Object类型时,会使用null

let b = null

全局变量

未定义的变量可以直接使用,在所有模块中都是可见的。

function fn(){
    a = 1
}
fn()
console.log(a)      //1

return后面不能换行

换行和空格在javascript中没有实际的意义。

let a 

=

1

//可以声明

但在return后面不能出现换行

function fn(){
    return
    1
}
fn()    // undefined

类型自动转换

javascript中声明的变量,后面赋值时可以随意更改类型。

let a = 1
typeof a        //number
a = '2'
typeof a        //string

在使用操作符时,可以不知不觉的进行类型转换。

let a = '1'
+a
typeof      //number

这种运算也大大加剧了运算的复杂性。

=====

==在判断两个值是否相等的时,会自动发生类型转换,得到的结果往往和你期待的不一致。

造成缺陷的客观原因

javascript还有很多这样的设计缺陷,造成这些设计缺陷主要有三个客观原因

  1. 设计仓促,javascript设计只用了三天
  2. 没有先例,javascript是唯一同时使用函数式编程和面向对象变成的语言
  3. 过早标准化,从定稿到标准化只用了一年半的时间,对比c语言,用了将近20年才标准化。

这三个原因导致了javascript很多缺陷,但并不妨碍它成为最有价值的语言,它是网页编程的唯一语言。

参考文章: Javascript诞生记 Javascript的10个设计缺陷