一、前言

为了发挥 JavaScript 的全部潜力,了解它的本质、历史及局限性是十分重要的。
本节为您讲解 JavaScript 和客户端脚本的起源。
二、Nombas 和 ScriptEase
大概在 1992 年,一家称作 Nombas 的公司开发了一种叫做 C 减减(C-minus-minus,简称 Cmm)的嵌入式脚本语言。Cmm 背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与 C (和 C ++)足够的相似性,以便开发人员能很快学会。这个脚本语言捆绑在一个叫做 CEnvi 的共享软件中,它首次向开发人员展示了这种语言的威力。
Nombas 最终把 Cmm 的名字改成了 ScriptEase,原因是后面的部分(mm)听起来过于消极,同时字母 C “令人害怕”。
现在 ScriptEase 已经成为了 Nombas 产品背后的主要驱动力。
三、Netscape 发明了 JavaScript
当 Netscape Navigator 崭露头角时,Nombas 开发了一个可以嵌入网页中的 CEnvi 的版本。这些早期的试验被称为 Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端语言。而 Nombas 丝毫没有料到它的理念将会成为万维网的一块重要基石。
当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。
那时正处于技术革新最前沿的 Netscape,开始认真考虑开发一种客户端脚本语言来解决简单的处理问题。
当时工作于 Netscape 的 Brendan Eich,开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 开发一个称之为 LiveScript 的脚本语言,当时的目的是在浏览器和服务器(本来要叫它 LiveWire)端使用它。Netscape 与 Sun 及时完成 LiveScript 实现。
就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为 JavaScript,目的是为了利用 Java 这个因特网时髦词汇。Netscape 的赌注最终得到回报,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 实现的基础。
转自:http://www.w3school.com.cn/js/pro_js_history.asp

JavaScript历史与ECMAScript相关推荐

  1. javascript历史、作用、三大组成、javascript代码书写位置、注意事项、变量

    JavaScript简介 JavaScript历史: JavaScript是一门解释型.动态类型.基于对象的脚本语言(不需要编译,直接执行,与之相对的是编译型语言),由美国网景公司的布兰登·艾奇发明, ...

  2. JavaScript从入门到放弃-JavaScript历史介绍

    JavaScript历史 要了解JavaScript,我们首先要回顾一下JavaScript的诞生. 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的 ...

  3. JavaScript历史

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

  4. JavaScript基础三部曲(一):JavaScript简介及ECMAScript部分

    文章目录 一.JavaScript简介 1.什么是JavaScript 2.JavaScript的三个部分: 1)核心(ECMAScript) 2)文档对象模型(DOM) 3)浏览器对象模型(BOM) ...

  5. JavaScript快速入门-ECMAScript本地对象(RexExp)

    一.概述 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 正则表达式是由一个字符序列形成的搜索模式. 当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式 ...

  6. JavaScript快速入门-ECMAScript本地对象(String)

    一.String对象 String对象和python中的字符串一样,也有很多方法,这些方法大概分为以下种类: 1.索引和查找 1.charAt()   返回指定位置的字符. 2.charCodeAt( ...

  7. JavaScript高级之ECMAScript 6 新特性

    2.1. let关键字 let关键字用来声明变量,使用 let声明的变量有几个特点: 不允许重复声明 块儿级作用域 不存在变量提升 不影响作用域链 应用场景:以后声明变量使用let就对了 案例:点击切 ...

  8. Javascript 历史遗留 - 产生的语法问题整理

    Javascript 历史遗留问题产生了许多混乱的语法 简单整理如下 [] == [] // false[] < [] // false[] > [] // false[] <= [ ...

  9. 前端学习(325):javascript历史

最新文章

  1. 美团面试失败(Java开发)
  2. python不断刷新网页_python使用多线程不断刷新网页的方法
  3. Linux虚拟地址空间布局
  4. 操作系统-并发性:互斥与同步
  5. 《DBNotes:Join算法的前世今生》
  6. 用JavaScript语言判断一个三位数是否为水仙花数
  7. Atom飞行手册翻译: 1.3 Atom基础
  8. 绮莉:一个超爱团队,为团队疯狂打call的少女
  9. suse linux11下的多网口位置确定
  10. Ignoring Provides line with DepCompareOp for package gdb-minimal
  11. python 文件对话框 颜色对话框_Python 文件对话框(一)
  12. Julia:副本copy引发的问题,期待0.4.0版本!
  13. Lodop,前端自定义打印
  14. Day2-开发环境搭建——百问网7天物联网智能家居
  15. Dojo: Quick Start
  16. 斯坦福大学-自然语言处理入门 笔记 第十九课 单词含义与相似性
  17. java如何叠加图片_图片叠加效果Java代码实现
  18. 2019秋-走的太久忘记了为什么出发
  19. 微信公众平台针对欺诈等违规行为处理结果公示
  20. 计算机三级网络技术知识点大全(七)

热门文章

  1. collection 多态 会自动转型为子类 继承多态需要显示转型
  2. Spring入门之一-------实现一个简单的IoC
  3. 解析/etc/inittab 文件(转)
  4. 2.2.1.处理机调度的概念,层次
  5. vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)
  6. linux的驱动开发——下载地址
  7. java dct变换_Discrete Cosine Transform [DCT] (离散余弦变换)
  8. png文件合并_png格式图片和jpg格式图片有什么区别?
  9. java keystore ca_PKCS12 Java Keystore from CA and User certificate in java
  10. 查询手机号段对应地区编码_2020陕西专升本考试今日起查询成绩啦