关于 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. Docker入门(一):简介

    这个<Docker入门>系列文档,是我根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家 ...

  2. [poj3368]Frequent values(rmq)

    题意:给出n个数和Q个询问(l,r),对于每个询问求出(l,r)之间连续出现次数最多的次数. 解题关键:统计次数,转化为RMQ问题,运用st表求解,注意边界. 预处理复杂度:$O(n\log n)$ ...

  3. jquery中的$.ajax()的源码分析

    针对获取到location.href的兼容代码: try { ajaxLocation = location.href; } catch( e ) { // Use the href attribut ...

  4. UVa 10801 Lift Hopping (Dijkstra)

    题意:有一栋100层的大楼(标号为0~99),里面有n个电梯(不超过5个),以及要到达的层数(aid),然后是每个电梯走一层所需的时间, 再n行就是对应每个电梯可以到达的层数,数量不定.然后每装换一次 ...

  5. Updatepanel 中使用 Timer 控件 失去焦点问题

    在Update Panel 中 如果使用timer 定时刷新数据,会造成textbox 或者其他控件的焦点丢失问题. 所以 text box 不能和timer 放在同一个Updatepanel 中. ...

  6. ue4 动态增删查改 actor,bp

    ue4.17 增 特殊说明:创建bp时,如果bp上随手绑一个cube,那么生成到场景的actor只执行构造不执行beginPlay,原因未知 ATPlayerPawn是c++类 直接动态创建actor ...

  7. Fire (poj 2152 树形dp)

    Fire (poj 2152 树形dp) 给定一棵n个结点的树(1<n<=1000).现在要选择某些点,使得整棵树都被覆盖到.当选择第i个点的时候,可以覆盖和它距离在d[i]之内的结点,同 ...

  8. 图论1 Tarjan算法

    强连通分量 模板(强联通分量个数+缩点) #include<iostream> #include<cstdio> #define MAXn 100000 #define MAX ...

  9. 洛谷P2414 [NOI2011]阿狸的打字机(AC自动机)

    传送门 考虑一下,如果串B在串A中出现过,那么A的fail指针必定直接或间接指向B 那么我们可以把fail树建起来,那么就变成B代表的节点的子树里有多少节点属于A 然后这就是一个序列统计问题,直接用d ...

  10. BitMap的原理以及运用

    位图(Bitmap),即位(Bit)的集合,是一种数据结构,可用于记录大量的0-1状态,在很多地方都会用到,比如Linux内核(如inode,磁盘块).Bloom Filter算法等,其优势是可以在一 ...