JavaScript的诞生

287 阅读4分钟

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

JavaScript的标准是ECMAScript 。2015年6月17日,ECMA国际组织发布了ECMAScript 的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为ECMAScript 6 或者ES6

组成部分

  1. ECMAScript,描述了该语 言的语法和基本对象。
  2. 文档对象模型(DOM),描述处理网页内容的方法和接口。
  3. 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

基本特点

  1. 是一种解释性脚本语言(代码不进行预编译)。
  2. 主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
  3. 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
  4. 跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如WindowsLinuxMacAndroidiOS等)。
  5. JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。
  6. JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。

JavaScript的设计缺陷

  1. 设计阶段过于仓促。这种语言的设计初衷,是为了解决一些简单的网页互动(比如,检查"用户名"是否填写),并没有考虑复杂应用的需要。设计者做梦也想不到,JavaScript将来可以写出像Gmail这种极其庞大复杂的网页。
  2. 没有先例。JavaScript是世界上唯一使用Prototype继承模型的主要语言。
  3. 过早的标准化。JavaScript的规格还没来及调整,就固化了。

JavaScript的10个设计缺陷

  1. 不适合开发大型程序。JavaScript没有名称空间(namespace),很难模块化;没有如何将代码分布在多个文件的规范;允许同名函数的重复定义,后面的定义可以覆盖前面的定义,很不利于模块化加载。
  2. 非常小的标准库。JavaScript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。
  3. nullundefinednull属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。两者非常容易混淆,但是含义完全不同。在编程实践中,null几乎没用,根本不应该设计它。
  4. 全局变量难以控制。
  5. 自动插入行尾分号。有时候,这会导致一些难以发现的错误。
  6. 加号运算符。+号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。如果一个操作项是字符,另一个操作项是数字,则数字自动转化为字符。这样的设计,不必要地加剧了运算的复杂性,完全可以另行设置一个字符连接的运算符。
  7. NaNNaN是一种数字,表示超出了解释器的极限。它有一些很奇怪的特性。
  8. 数组和对象的区分。由于JavaScript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦。
  9. =======用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。因此,推荐任何时候都使用"==="(精确判断)比较符。
  10. 基本类型的包装对象。JavaScript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。与基本数据类型对应的对象类型,作用很小,造成的混淆却很大。

感想:

JavaScript本身存在很多缺陷,也有很多问题,但是并不妨碍它成为一个出色的网页编程语言,甚至更多涉足各种方向更多领域,当我们一分为二得看待这个语言时,它的优点永远闪耀着迷人的光辉。