关于 JavaScript 的历史和来由相信学过 JavaScript 的小伙伴都能说出一二。我看过一些入门书籍第一章或者前言部分都有介绍,但是一直没捋清这段历史。今天通过两个问题,来加深我对 JavaScript 历史的认识。

1、JavaScript 的历史;

2、JavaScript 与 ECMAscript 的关系;

答:      在上世纪 90 年代,互联网浪潮来袭,使用互联网的人越来越多,网页也越来越复杂。那时表单是通过传递给服务器进行验证,如果,某必选字段没填,或者格式不对,点击提交,服务器验证后再把错误信息回传给客户端。在那个网速极低,拨号上网的时代,导致表单填写效率极低。于是网景 (Netscape)公司决定开发一种脚本语言,来解决这个问题,在客户端完成表单验证。编写 JavaScript 的人叫布兰登·艾奇。当初该语言命名为 LiveScript,据说为了蹭 Java 的热度,临时改为 JavaSciprt,并在 Netscape 自家浏览器(Netscape Navigator)实现。随后微软在自家浏览器(IE)中也加入 JavaScript 实现,称为 Jscript。JavaScript 与 Jscript 之间的不兼容渐渐发生问题。标准化成为当时业界的共识。于是欧洲计算机制造协会着手编制标准,并称为 ECMAscript。

答:      ECMAscript 定义了该语言的标准(包括该语言的语法、数据类型、关键字、操作符、对象等……),JavaScript 指的是 ECMAscript 标准的实现。说到实现,一个完整 JavaScript 实现,除了 ECMAscript 之外,必不可少的还有文档对象模型(DOM)和浏览器对象模型(BOM)。DOM 指的是针对 XML 及扩展到 HTML 文档应用编程接口(API)。DOM 将文档映射成各种节点,通过 DOM 一些属性和方法来增加、替换、删除文档的每个部分。那么 DOM 标准是由 W3C 制定,在标准之前 IE 和 Netscape Navigator 已经有 DOM 实现,历史上称为(DOM 0 级)。W3C 制定的标准有 DOM 1 级,它包含 DOM 核心和 HTML-DOM。 DOM 2 级、DOM 3 级在原来的基础上增加一些扩展。BOM 指的是文档以外的 API,它包括浏览器本身,可以说 window 对象都属于 BOM。回过来说说 ECMAscript,它也有好几个版本。我们常说的是第三版,第五版。据说第四版过于激进,把语言本身改动很大,最终并没有发布。浏览器对 ECMAscript 各个版本实现也不相同。目前主流新版本浏览器(IE、safari、chrome、firefox、opera)能完整实现 ECMAscript 第五版……

而现在,网页的特效和交互大多用 JavaScript 编写。它的作用远不止设计之初的表单验证。

原创文章,版权所有,转载请注明出处!

(2017.10.10) 我对 JavaScript 历史的认识的更多相关文章

  1. 10个最好的 JavaScript 动画库和开发框架

    虽然 CSS3 动画功能能够让我们以简单轻松的方式实现动画效果,但是浏览器兼容性问题让人头疼.不过不用担心,我们还有另外的武器——JavaScript,它同样可以帮助你实现各种各样的动画效果,而且借助 ...

  2. MyEclipse 2017 CI 10 发布(附下载)

    挑战全年最低价!MyEclipse线上狂欢仅剩最后3天!立即抢购>> 2017 CI 10主要是一个错误修复版本,这个版本为Angular和TypeScript工具提供了重要的修复,并为I ...

  3. 欢迎来怼-Alpha周(2017年10月19)贡献分配规则和分配结果

    .从alpha周(2017年10月19日开始的2周)开始,提高贡献分比重. 贡献分 : 团队分 = 1 : 5 教师会在核算每位同学总分时按比例乘以系数. 每位同学带入团队贡献分10分,如果团队一共7 ...

  4. 10个强大的Javascript表单验证插件推荐

    创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...

  5. 2017年10月31日结束Outlook 2007与Office 365的连接

    2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...

  6. 2017.10.10 java中的继承与多态(重载与重写的区别)

    1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...

  7. 10 个优秀的JavaScript开发框架

    阅读目录 TouchStone.js Meteor Knockout Enyo.js Reactive-coffee ExtJS Aurajs Cappuccino canjs Feathersjs ...

  8. JavaScript——历史与简介

    上一篇博文距离现在已经四个月了,一直想写些什么无奈工作比较忙碌.我的恩师老王在毕业聚餐那天带着一声酒气告诉我一定要把博客坚持写下去,所以今天下决心要开始这个新的篇章. 之所以想要从头写一个关于Java ...

  9. iOS 10.10 10.11 10.12 安装升级CocoPods

    CocoPods简介 CocoaPods是一个用Ruby写的,负责管理iOS以及OSX系统下的一个第三方类库管理工具,通过CocoaPods,我们可以集中,统一的管理第三方开源库.当然这些库徐亚Coc ...

随机推荐

  1. Scala学习——集合的使用和“_”的一些使用(中)

    1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...

  2. this在方法赋值过程中无法保持(隐式丢失)

    在看<高级程序设计>(我的红宝书) P.183页时遇到下面一个问题 var name = "77"; var obj = { name: "88", ...

  3. Jasper:目录/资源

    ylbtech-Jasper:目录/资源 1. 官网返回顶部 1. https://www.jasper.com/ 2. 2.返回顶部 1. http://api.jasperwireless.com ...

  4. 我对sobel算子的理解

    转自:http://blog.csdn.net/yanmy2012/article/details/8110316 索贝尔算子(Sobeloperator)主要用作边缘检测,在技术上,它是一离散性差分 ...

  5. The Tomcat server configuration at \Servers\Tomcat v8.0 Server at localhost-config is missing. Check the server for erro

    解决方案 1.选择Eclipse工具栏中的Windows→Perferences 2.remove已经创建的server 3.选择Add重新添加,选择create anew local server ...

  6. Python手动安装 package

    https://pypi.python.org/pypi 下载 解压 进入setup.py的目录 python setup.py build python setup.py install

  7. js避免命名冲突

    [1]工程师甲编写功能A var a = 1; var b = 2; alert(a+b); [2]工程师乙添加新功能B var a = 2; var b = 1; alert(a-b); [3]上一 ...

  8. android apk 防止反编译技术第二篇-运行时修改字节码

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  9. [codeforces219D]Choosing Capital for Treeland树形dp

    题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边. 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值.依然是两次dfs,套路解法. 对树形dp的理解:树形d ...

  10. PCL中有哪些可用的PointT类型(5)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=270 Narf36 - float x, y, z, roll, pitch ...