JavaScript历史
大概在1992年,一家称作Nombas的公司开始开发一种叫做C–(C-minus-minus,简称Cmm)的嵌入式脚本语言。 Cmm背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与C(和C++)中够的相似性,以便开发人员能很快学会。 这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,它首次向开发人员展示了这种语言的威力。 Nombas最终把Cmm的名字改成了ScripEase。原因是后面的部分(mm)听起来过于“消极”,同时字母C“令人害怕”。 现在ScriptEase已经成为了Nombas产品背后的主要驱动力。 当Netscape Navigator崭露头角时,Nombas开发了个可以嵌入网页中的CEnvi的版本。 这些早期的试验称为Espresso Page(浓咖啡般的页面),它们代表了每个在万维网上使用的客户端脚本语言。 而Nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。

当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过28.8kbit/s的调制解调器来连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器端进行多次的往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了30秒钟的处理后,看到的却是一条告诉你忘记填写一个必要的字段。那时正处于技术革新最前沿的Netscape,开始认真考虑一种开发客户端脚本语言来解决简单的处理问题。

当时工作于Netscape的Brendan Eich,开始着手为即将在1995年发行的Netscape Navigator 2.0开发一个称之为LiveScript的脚本语言,当时的目的是同时在浏览器和服务器(本来要叫它LiveWire的)端使用它。Netscape与Sun公司联手及时完成LiveScript实现。就在Netscape Navigator 2.0即将正式发布前,Netscape将其更名为JavaScript,目的是为了利用Java这个因特网时髦词汇。Netspace的赌注最终得到回报,JavaScript从此变成了因特网的必备组件。

因为JavaScript 1.0如此成功,Netscape在Netscape Navigator 3.0中发布了1.1版。恰巧那个时候,微软决定进军浏览器,发布了IE 3.0 并搭载了一个JavaScript的克隆版,叫做JScript(这样命名是为了避免与Netscape潜在的许可纠纷)。微软步入Web浏览器领域的这重要一步虽然令其声名狼藉,但也成为JavaScript语言发展过程中的重要一步。

在微软进入后,有3种不同的JavaScript版本同时存在:Netscape Navigator 3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。与C和其他编程语言不同的是,JavaScript并没有一个标准来统一其语法或特性,而这3种不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言标准化显然已经势在必行。

1997年,JavaScript 1.1作为一个草案提交给欧洲计算机制造商协会(ECMA)。第39技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法和语义”(http://www.ecma-international.org/memento/TC39.htm)。由来自Netscape、Sun、微软、Borland和其他一些对脚本编程感兴趣的公司的程序员组成的TC39锤炼出了ECMA-262,该标准定义了叫做ECMAScript的全新脚本语言。

在接下来的几年里,国际标准化组织及国际电工委员会(ISO/IEC)也采纳ECMAScript作为标准(ISO/IEC-16262)。从此,Web浏览器就开始努力(虽然有着不同程度的成功和失败)将ECMAScript作为JavaScript实现的基础。

尽管ECMAScript是一个重要的标准,但它并不是JavaScript唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的JavaScript实现是由以下3个不同部分组成的

核心(ECMAScript)——JavaScript的核心ECMAScript描述了该语言的语法和基本对象
文档对象模型(DOM)——DOM描述了处理网页内容的方法和接口
浏览器对象模型(BOM)——BOM描述了与浏览器进行交互的方法和接口
ECMAScript、DOM、BOM将是我们之后课程的主要内容。

JavaScript与Java
尽管名字中有Java,但是JavaScript和Java几乎没有什么共同点。Java是一种全功能的编程语言,是由Sun公司开发和推广的。Java是C和C++编程语言之后的又一种主流语言,程序员可以使用它创建完整的应用程序和控制消费电子设备。与其他语言不同,Java宣称具有跨平台兼容性;也就是说,程序员应该能够编写出可以在所有种类的机器上运行的Java程序,无论机器运行的是Windows、Mac OS X还是任何风格的UNIX。但实际上,Java不总是能够实现这个梦想,因为Sun和微软公司在这种语言的发展方向方面有很大的分歧。微软公司首先试图以自己的方式将Java集成到Windows中(Sun认为,这种方式使Java在Windows上以一种方式工作,而在其他机器上以另一种方式工作,从而破坏了Java的跨平台兼容性);随后,微软公司从Windows中完全去除了Sun的Java,而创建了自己的类Java语言:C#。经过两公司之间的一轮诉讼之后,Sun占据了上风,现在可以在Windows(或Linux)上安装Sun的最新Java版本(http://www.java.com/getjava/)。Mac OS X操作系统在安装时会附带Java。

JavaScript可以做什么
用JavaScript可以做许多事情,使网页更具交互性,给站点的用户提供更好、更令人兴奋的体验。JavaScript使你可以创建活跃的用户界面,当用户在页面间导航时向他们提供反馈。例如,你可能在一些站点上见过在鼠标指针停留时突出显示的按钮。这是用JavaScript实现的,使用了一种称为翻转器(rollover)的技术 可以使用JavaScript确保用户在表单中输入有效的信息,这可以节省你的业务时间和开支。如果表单需要进行计算,那么可以在用户机器上的JavaScript中完成,而不需要任何服务器端处理。你应该知道一种区分程序的方式:在用户机器上运行的程序称为客户端(client-side)程序;在服务器上运行的程序(包括后面要讨论的CGI)称为服务器端(server-side)程序。 可以使用JavaScript根据用户的操作即时创建定制的HTML页面。假设你正在运行一个旅行指南站点,用户点击夏威夷作为旅游目的地。你可以在一个新窗口中显示最新的夏威夷旅游指南。JavaScript可以控制浏览器,所以你可以打开新窗口、显示警告框以及在浏览器窗口的状态栏中显示定制的消息。JavaScript有一套日期和时间特性,可以生成时钟、日历和时间戳文档。 JavaScript还可以处理表单、设置cookie、即时构建HTML页面以及创建基于Web的应用程序。

JavaScript不能做什么
JavaScript是一种客户端(client-side)语言;也就是说,设计它的目的是在用户的机器上执行任务,而不是在服务器上。因此,JavaScript有一些固有的限制,这些限制主要出于安全原因:

1.JavaScript不允许读写客户机器上的文件。这是有好处的,因为你肯定不希望网页能够读取自己硬盘上的文件,或者能够将病毒写入硬盘,或者能够操作你计算机上的文件。唯一的例外是,JavaScript可以写到浏览器的cookie文件,但是也有一些限制
2.JavaScript不允许写服务器机器上的文件。尽管写服务器上的文件在许多方面是很方便的(比如存储页面点击数或用户填写的表单数据),但是JavaScript不允许这么做。相反,需要用服务器上的一个程序处理和存储这些数据。这个程序可以是用Perl或PHP等语言编写的CGI或Java程序。
3.JavaScript不能关闭不是由它自己打开的窗口。这是为了避免一个站点关闭其他任何站点的窗口,从而独占浏览器。
4.JavaScript不能从来自另一个服务器的已经打开的网页中读取信息。换句话说,网页不能读取已经打开的其他窗口中的信息,因此无法探察访问这个站点的冲浪者还在访问哪些其他站点。
Hello,JavaScriptWorld!
我们的第一个脚本:最经典的HelloWorld程序!

<script type="text/javascript">
document.write("<h2>Hello,JavaScriptWorld!</h2>");
</script>
  • 1
  • 2
  • 3

开发环境
选择一个你喜欢的纯文本编辑器或IDE
NotePad++
VIM
UltraEdit
EditPlus
gEdit(Unix)
Emacs(Mac/Unix)
其它
至少一个符合W3C标准的浏览器(推荐火狐浏览器),和一些市场上流行的浏览器(IE)
FireFox 3.0+
Internet Explorer 6.0+ (由于IE具有多种不同的版本,还推荐安装IETester)
Google Chrome 1.0+
Opera 9.0+
Safari 3.0+
调试工具
FireFox下的FireBug,Venkman等
IE下的IE DeveloperToolbar,MS Script Debugger等(强烈不推荐MS Script Debugger,安装之后问题多)
Google Chrome 的JS控制台已经很强大了,Opera的错误控制台也可以,Opera蜻蜓和FireBug一样强大,Safari具有和Chrome一样的控制台

1,JavaScript前世今生的更多相关文章

  1. JavaScript前世今生

    JavaScript前世今生,HelloWorld与开发环境 JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌 ...

  2. 走进javascript——它是什么?

    javascript不是什么 如<把时间当作朋友>的作者所说,"有些时候,有些事物,从反面描述比从正面描述更为容易.如若先仔细说清楚这本书不是什么,之后,至于它究竟是什么,很可能 ...

  3. 前端之JavaScript(一)

    一.JavaScript前世今生 它最初由Netscape的Brendan Eich设计.JavaScript是甲骨文公司的注册商标.Ecma国际以JavaScript为基础制定了ECMAScript ...

  4. js教程--从入门到精通 第一篇 js的前世今生以及js中基本数据类型和引入方式

    1.Javascript前世今生   1.1.什么是Javascript       Javascript运行于Javascript [解释器/引擎]中的解释性脚本语言      Javascript ...

  5. JavaScript的前世今生

    和CSS一样,JavaScript在各浏览器下并非完全一致,它所带来的兼容性问题时常困扰着我们,以至于现在“能否处理流行浏览器的兼容性问题”成为了检验一个程序员是否合格的标准之一.了解JavaScri ...

  6. JavaScript 异步编程的前世今生(上)

    前言 提到 JavaScript 异步编程,很多小伙伴都很迷茫,本人花费大约一周的业余时间来对 JS 异步做一个完整的总结,和各位同学共勉共进步! 目录 part1 基础部分 什么是异步 part2 ...

  7. JavaScript异步流程控制的前世今生

    Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous). 什么是同步编程 "同步模式"就是上一段的模式,后一个任务等待前 ...

  8. JavaScript - 异步的前世今生

    ​ 在开始接触JavaScript的时候,书上有一句话我记忆深刻,JavaScript是一门单线程语言,不管从什么途径去获取这个消息,前端开发者都会记住,哦~~,JavaScript是一门单线程语言, ...

  9. 技术分享|JavaScript的前世今生

    目录 一.什么是JavaScript 二.JavaScript的功能 三.JavaScript可以做什么 四.JavaScript框架 五.HTML,CSS和JavaScript 六.JavaScri ...

随机推荐

  1. 解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的

    解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的 .chart{ width: 100%; text-align: center; } .canvas{ ...

  2. Core 接口发布报错

    An error occurred while starting the application 提示:启动应用程序时发生错误 这个错误在Startup启动项里面 要找具体的报错位置 如下 这样就可以 ...

  3. parseInt和map方法使用案例分析

    ["1","2","3"].map(parseInt) //[1,NaN,NaN] 先看map()方法 定义和用法 map() 方法返回一个 ...

  4. 解决关于ios访问相机闪退问题

    在mac上的ionic3项目打包成苹果app,系统版本是10.3.3 . 当调用相机的时候出现闪退情况,这是调试出现的问题: This app has crashed because it attem ...

  5. ionic2 基于ngx-translate实现多语言切换,翻译

    介绍 ngx-translate 是Angular 2+的国际化(i18n)库,在github的地址是箭头 https://github.com/ngx-translate/core 将ngx-tra ...

  6. 【C#写日志两个简单方法】

    方法一:以日期为日志文件名. public void WriteLog(string msg) { string filePath = AppDomain.CurrentDomain.BaseDire ...

  7. win8 notepad++ 设置无法保存

    前些天买了新笔记本.装的是win8 ,后来装了notepad++ ,最新版的,改了字体,下次从新打开之后,发现字体改动无效.后来试了一下“管理员身份运行”,再次打开,保存就有效.但总不能每次都那样去右 ...

  8. Pytorch1.0入门实战一:LeNet神经网络实现 MNIST手写数字识别

    记得第一次接触手写数字识别数据集还在学习TensorFlow,各种sess.run(),头都绕晕了.自从接触pytorch以来,一直想写点什么.曾经在2017年5月,Andrej Karpathy发表 ...

  9. 使用Pyinstaller转换.py文件为.exe可执行程序

    pyinstaller能够在Windows.Linux等操作系统下将Python脚本打包成可直接运行程序.使Python脚本可以在没有安装Python的环境中直接运行,方便共享. 测试环境 pytho ...

  10. MySQL EXPLAIN 命令: 查看查询执行计划

    MySQL 的 EXPLAIN 命令可以查看SELECT语句的执行的计划,是 MySQL 查询优化的必备工具. 通过执行计划可以了解查询方式.索引使用情况.需要扫描的数据量以及是否需要临时表或排序操作 ...