一、什么是JS
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器声明式(如函数是
JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近
JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3 标准。2015年6月17日,ECMA国际组织发布了ECMAScript的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为ECMAScript 6 或者ES6。
二、JS发展史
1990年底,欧洲科学家:Tim Berners-Lee(****蒂姆伯纳斯 - 李****),在互联网的基础上,发明了 World Wide Web(万维网)。从那以后就可以在网上浏览网页文件。但是最早的网页只能在操作系统的终端里浏览(使用命令行操作),网页是在字符窗口中显示的,非常不方便。
1992年底,美国 NCSA 开发了 Mosaic 浏览器,这是人类历史上第一个浏览器,从此就进入了浏览器浏览(图形界面窗口浏览)的大时代。
1994年10月,Mosaic的开发者之一:Marc Andreessen(*马克 安德森*)联合投资家 Jim Clark(吉姆 克拉克)成立了 Mosaic Communications(Mosaic 通信公司)**,但是不久后就改名为 Netscape(网景)。这家公司主要就在 Mosaic浏览器的基础上开发面向普通用户的新一代浏览器 Netscape Navigator(网景领航员)。
1994年12月, Navigator 发布了 1.0 版,一发布大受欢迎,市场份额一举超过了 90%。
但是 Netscape 公司很快就发现,Navigator 浏览器 需要一种可以嵌入网页的脚本语言(不具备开发操作系统的能力,用来编写控制大型应用程序(比如浏览器)的文件),用来控制浏览器行为。在当时,网速很慢但是上网费却非常贵,有些操作不适合在服务端完成。比如说:用户忘记填写 “用户名”,但是却点击了 “发送” 按钮,到服务器在发现就有些晚了(浪费网费),所以最好能在用户发出数据之前,就提醒用户 “填写用户名”。所以这时候就需要在网页中嵌入一些小程序,让浏览器检测每一栏是否都填写了。
所以当时管理层对这种浏览器脚本语言的设想是:功能不需要太强,语法较为简单,容易学习和部署。那一年,Sun公司的 Java 语言发布出来了,而且市场推广活动十分成功。所以当时 Netscape 公司就决定与 Sun 公司合作,让浏览器支持嵌入 Java 小程序(后称:Java applet)。但是,浏览器脚本语言是否就选用 Java语言,就存在其争论。后来,还是决定不使用 Java。因为 Java 的语法对于网页小程序过于 “重” 了。但是决定脚本语言的语法还是要接近 Java语言,并且可以支持 Java 程序。这些设想直接就排除了当时现存语言,比如 Perl、Python、TCL。
1995年4月,Netscape 公司决定雇佣了程序员 Brendan Eich (****布兰登 艾希****)开发这种网页脚本语言。Brendan Eich 当时有很强的函数式编程北京,希望以 Scheme 语言(函数式语言鼻祖 LISP 语言的一种方言)为蓝本,来实现这种新语言。他的Netscape上司坚持认为该语言的语法类似于Java。结果是一种语言具有Scheme的大部分功能,Self的面向对象以及Java的语法。
1995年5月,第一个版本在十天内完成,以适应 Navigator 2.0 Beta 发布计划。这个语言是一个大杂烩,语法有多个来源。
- 基本语法:借鉴 C 语言和 Java 语言。
- 数据结构:借鉴 Java 语言,包括将值分成原始值和对象两大类。
- 函数的用法:借鉴 Scheme 语言和 Awk 语言,将函数当作第一等公民,并引入闭包。
- 原型继承模型:借鉴 Self 语言(Smalltalk 的一种变种)。
- 正则表达式:借鉴 Perl 语言。
- 字符串和数组处理:借鉴 Python 语言
为了保持简单,这种脚本语言缺乏了一些关键的功能,比如块级作用域、模块、subtyping(子类型)等等,但是却可以利用现有功能找出解决办法。这种功能的不足,直接导致了后来的 JavaScript 的一个显著特点:对于其他语言,你需要学习语言的各种功能,二对于 JavaScript ,你常常只需要学习解决各种问题的模式就好了。而且由于来源多样,从一开始就注定了, JavaScript 的编程风格是函数式编程和面向对象编程的一种混合体。
Netscape 公司的这种浏览器脚本语言,最初名字叫做 Mocha,1995年9月改为 LiveScript。12月,Netscape 公司与 Sun 公司(Java 语言的发明者和所有者)达成协议,后者允许将这种语言叫做 JavaScript。这样一来,Netscape 公司可以借助 Java 语言的声势,而 Sun 公司则将自己的影响力扩展到了浏览器。
之所以起这个名字,并不是因为 JavaScript 本身与 Java 语言有多么深的关系**(实际上基本没关系),**而是因为 Netscape 公司已经决定,使用 Java 语言开发网络应用程序,JavaScript 可以像胶水一样,将各个部分连接起来。但是后来 Java 语言的浏览器插件失败了,JavaScript 反而发扬光大。
1995年12月4日,Netscape 公司与 Sun 公司联合发布了 JavaScript 语言,对外宣传JavaScript 是 Java 的补充,属于轻量级的 Java,专门用来操作网页。
1996年3月,Navigator 2.0 浏览器正式内置了 JavaScript 脚本语言。
三、JS特性
(1)脚本语言。JavaScript是一种解释型的脚本语言,C、C++)等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。
(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。 [6]
不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。
而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖JavaScript在客户端进行支持。