JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言. JavaScript是一门基于原型、头等函数的语言, 是一门多范式的语言, 它支持面向对象程序设计, 命令式编程, 以及函数式编程.

它被世界上的绝大多数网站所使用, 也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持.

JavaScript与Java在名字或语法上都有很多相似性, 但这两门编程语言从设计之初就有很大的不同, JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响.
在语法结构上它又与C语言有很多相似(例如if条件语句、switch语句、while循环、do-while循环等).

JS诞生的背景

JavaScript, 1995年由网景公司 (Netscape) 的程序员 Brendan Eich 发明.

JavaScript诞生于浏览器大战的时代背景, 起初作为Netscape Navigator浏览器的脚本, 只不过是一个不起眼的小功能, 现在则是互联网很受欢迎的编程语言之一.

1996年11月,网景公司正式向 ECMA(欧洲计算机制造商协会)提交语言标准. 1997年6月,ECMA 以 JavaScript 语言为基础制定了 ECMAScript 标准规范 ECMA-262.

由于版权问题, JavaScript语言标准不叫JavaScript, 而叫ECMAScript.

ECMA标准的版本

1997年, 第一版ECMAScript发布;
1999年, 第三版发布, 则是使用最广泛的版本;
第四版, 流产.
2009年, 第五版发布, 增加了一些功能;
2015年, 第六版发布, 新浏览器都支持这一版.
之后每年发布一版, 版本号都以年份命名.

JS与ECMAScript的关系

ECMA是纸上的标准, JS是浏览器的实现;
纸上标准往往落后于浏览器, 先实现, 再写进标准.

JS的设计缺陷

由于设计过于仓促, 且设计之初世界上还没有同时结合函数式编程和面向对象编程的先例, 加上过早标准化, 导致JS存在一些设计缺陷. 根据阮一峰的文章, JS的设计存在以下10个缺陷:

  1. 不适合开发大型程序
  2. 标准库非常小
  3. null 和 undefined 两者很容易混淆
  4. 全局标量难以控制
  5. 自动插入行尾分号
  6. 加号运算符功能易混淆
  7. NaN存在奇怪的特性
  8. 数组和对象的区分很麻烦
  9. == 和 === 的问题
  10. 基本数据类型的包装对象易造成混淆