写代码啦
《JavaScript 的诞生》
回复数(0) 浏览数(25)
{{topic.upvote_count || 0}} 编辑 回复

JavaScript 的历史

  1. 1993年,国家超级电脑应用中心(NCSA)发表了NCSA Mosaic,这是最早流行的图形接口网页浏览器,1994年,Mosaic的主要开发人员随即创立了Netscape公司,并雇用了许多原来的NCSA Mosaic开发者用来开发Netscape Navigator,并成为1990年代互联网的主要浏览器。网景预见到网络需要变得更动态。公司的创始人马克·安德森认为HTML需要一种胶水语言,让网页设计师和兼职程序员可以很容易地使用它来组装图片和插件之类的组件,且代码可以直接编写在网页标记中。

  2. 1995年,网景招募了布兰登·艾克,目标是把Scheme语言嵌入到Netscape Navigator浏览器当中。但更早之前,网景已经跟昇阳合作在Netscape Navigator中支持Java。后来网景决定发明一种与Java搭配使用的辅助脚本语言并且语法上有些类似,艾克在1995年5月仅花了十天时间就把原型设计出来了。

  3. 最初命名为Mocha,1995年9月在Netscape Navigator 2.0的Beta版中改名为LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署时被重命名为JavaScript,当时网景公司与昇阳电脑公司组成的开发联盟为了让这门语言搭上Java这个编程语言“热词”,因此将其临时改名为JavaScript。

  4. 微软公司于1995年首次推出Internet Explorer,从而引发了与Netscape的浏览器大战。微软对Netscape Navigator解释器进行了逆向工程,创建了JScript,以与处于市场领导地位的网景产品同台竞争。JScript也是一种JavaScript实现,这两个JavaScript语言版本在浏览器端共存意味着语言标准化的缺失,发展初期,JavaScript的标准并未确定,同期有网景的JavaScript,微软的JScript双峰并峙。

  5. 1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262。JavaScript成为了ECMAScript最著名的实现之一。除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。

JavaScript 的十个设计缺陷

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

  2. 非常小的标准库
    Javascript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。

  3. null和undefined
    null属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。
    两者非常容易混淆,但是含义完全不同。在编程实践中,null几乎没用,根本不应该设计它。

  4. 全局变量难以控制
    Javascript的全局变量,在所有模块中都是可见的;任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。

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

  6. 加号运算符
    +号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。如果一个操作项是字符,另一个操作项是数字,则数字自动转化为字符。
    这样的设计,不必要地加剧了运算的复杂性,完全可以另行设置一个字符连接的运算符。

  7. NaN
    NaN是一种数字,表示超出了解释器的极限。与其设计NaN,不如解释器直接报错,反而有利于简化程序

  8. 数组和对象的区分
    由于Javascript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦。

  9. == 和 ===
    ==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。因此,推荐任何时候都使用"==="(精确判断)比较符。

  10. 基本类型的包装对象
    Javascript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。与基本数据类型对应的对象类型,作用很小,造成的混淆却很大。

{{topic.upvote_count || 0}}

JavaScript 的历史

  1. 1993年,国家超级电脑应用中心(NCSA)发表了NCSA Mosaic,这是最早流行的图形接口网页浏览器,1994年,Mosaic的主要开发人员随即创立了Netscape公司,并雇用了许多原来的NCSA Mosaic开发者用来开发Netscape Navigator,并成为1990年代互联网的主要浏览器。网景预见到网络需要变得更动态。公司的创始人马克·安德森认为HTML需要一种胶水语言,让网页设计师和兼职程序员可以很容易地使用它来组装图片和插件之类的组件,且代码可以直接编写在网页标记中。

  2. 1995年,网景招募了布兰登·艾克,目标是把Scheme语言嵌入到Netscape Navigator浏览器当中。但更早之前,网景已经跟昇阳合作在Netscape Navigator中支持Java。后来网景决定发明一种与Java搭配使用的辅助脚本语言并且语法上有些类似,艾克在1995年5月仅花了十天时间就把原型设计出来了。

  3. 最初命名为Mocha,1995年9月在Netscape Navigator 2.0的Beta版中改名为LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署时被重命名为JavaScript,当时网景公司与昇阳电脑公司组成的开发联盟为了让这门语言搭上Java这个编程语言“热词”,因此将其临时改名为JavaScript。

  4. 微软公司于1995年首次推出Internet Explorer,从而引发了与Netscape的浏览器大战。微软对Netscape Navigator解释器进行了逆向工程,创建了JScript,以与处于市场领导地位的网景产品同台竞争。JScript也是一种JavaScript实现,这两个JavaScript语言版本在浏览器端共存意味着语言标准化的缺失,发展初期,JavaScript的标准并未确定,同期有网景的JavaScript,微软的JScript双峰并峙。

  5. 1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262。JavaScript成为了ECMAScript最著名的实现之一。除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。

JavaScript 的十个设计缺陷

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

  2. 非常小的标准库
    Javascript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。

  3. null和undefined
    null属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。
    两者非常容易混淆,但是含义完全不同。在编程实践中,null几乎没用,根本不应该设计它。

  4. 全局变量难以控制
    Javascript的全局变量,在所有模块中都是可见的;任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。

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

  6. 加号运算符
    +号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。如果一个操作项是字符,另一个操作项是数字,则数字自动转化为字符。
    这样的设计,不必要地加剧了运算的复杂性,完全可以另行设置一个字符连接的运算符。

  7. NaN
    NaN是一种数字,表示超出了解释器的极限。与其设计NaN,不如解释器直接报错,反而有利于简化程序

  8. 数组和对象的区分
    由于Javascript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦。

  9. == 和 ===
    ==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。因此,推荐任何时候都使用"==="(精确判断)比较符。

  10. 基本类型的包装对象
    Javascript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。与基本数据类型对应的对象类型,作用很小,造成的混淆却很大。

25
回复 编辑