ECMAscript是一种中性的语言,中性表示与所处环境(宿主环境)无关(客户端/服务器/浏览器),它仅仅是一个纯粹意义上的语言。

ECMAscript-262定义了这门语言的基础,或者说规则(比如说这门语言语法,里面有什么基础类型,类型间如何转换,变量行为,函数行为),就像定义了一个接口。

如何实现这些规则就是宿主环境的事情了,当然宿主环境不仅要实现定义的规则,也会用这些规则做一些特定的事情,这些事情是没有定义在ECMAscript中的扩展。

比如说Web浏览器中的Javascript:

Javascript = ECMAscript + DOM + BOM

  • ECMAscript:语言核心
  • DOM:文档对象模型 (操作HTML页面内容)
  • BOM:浏览器对象模型 (操作浏览器行为)

除了Javascript,还有其他宿主环境也实现了ECMAscript,比如Adobe的Actionscript。(语言定义出来是写诗歌还是小说?)

题外话:如何定义规则不是件容易的事情,特别当这个规则是一门语言,这些规则要互相呼应,不能自相矛盾,规则定义太强会失去灵活性,定义太弱会不严谨不安全,这些都是直接影响到语言的发展和未来,如何把握这个度就是一门艺术。

版本

  • ECMAscript v1:仅仅是Netscape的Javascript1.1除去浏览器部分代码。
  • ECAMScript v2:仅仅是对第一版进行编辑加工,不会作为兼容性的标准。
  • ECAMScript v3:对标准第一次真正的修改,字符串处理,错误定义,数值输出,正则表达式,控制语句,异常处理,这才成为一门真正的语言。
  • ECAMScript v4:基本上定义了一门新的语言,强类型,新语句,新数据结构,真正的类,经典继承,数据交互方式。
  • ECAMScript v3.1:组委会觉得4改动太大!提出了3.1的替代建议,4没有发布就放弃了
  • ECAMScript v5: 澄清3中已知的歧义,添加新功能:JSON对象,继承的方法,高级属性定义,严格模式。

目前浏览器中的Javascript都能兼容v5(IE9,Firefox4,Chrome,Safari)

ECMAscript v.s. Javascript的更多相关文章

  1. JavaScript异步编程(1)- ECMAScript 6的Promise对象

    JavaScript的Callback机制深入人心.而ECMAScript的世界同样充斥的各种异步操作(异步IO.setTimeout等).异步和Callback的搭载很容易就衍生"回调金字 ...

  2. JavaScript的组成—ECMAScript、BOM和DOM

      JavaScript 是一种基于 ECMAScript 规范的脚本语言,并在此基础上进行了自己的封装.ECMAScript 不是一种编程语言,仅仅是一种脚本语言规范,由欧洲计算机协会制定和发布,任 ...

  3. JavaScript ECMAScript版本介绍

    1. 介绍 1.1 什么是ECMAScript ECMAScript,简称ES,是由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers ...

  4. ECMAScript和JavaScript的区别,ECMAScript发展更新历史,ECMAScript5和ECMAScript6的新特性及浏览器支持情况,ECMAScript 5/ECMAScript 2015正式发布

    ECMAScript和JavaScript的区别 ECMA是European Computer Manufacturers Association的缩写,即欧洲计算机制造商协会.欧洲计算机制造商协会是 ...

  5. ECMAScript与JavaScript

    ECMAScript发展史: 1997 1998.6 1999.12 2008.7 2009.12 2015.61996年11月 javaScript创造者Netscape公司将javaScript提 ...

  6. JavaScript之ECMAScript

    JavaScript脚本语言, 运行在浏览器上,无需编译, 轻量级的语言. 功能:让页面有执行逻辑的功能, 可以产生一些动态的效果 JavaScript = ECMAScript + BOM + DO ...

  7. JavaScript和JSCript的标准ECMAScript

    相信很多人都听过JavaScript(简称JS),甚至学过JavaScript.但是却没听过ECMAScript(简称:EC). ECMAScript其实是JavaScript的标准,也就是JavaS ...

  8. JavaScript 实现 (ECMAScript 6)

    JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象: DOM 描述了处理网页内容的方法和接口: BOM 描述了与浏览器进行交互的方法和接口. ECMAScript.DOM ...

  9. JavaScript第一天

    1.静态的网页技术和动态的网页技术 静态网页是相对于动态网页而言,是指没有后台数据库.不含程序和不可交互的网页.你编的是什么它显示的就是什么.不会有任何改变.静态网页相对更新起来比较麻烦,适用于一般更 ...

随机推荐

  1. Canvas -画图 关键字

    颜色.样式和阴影 属性 描述 fillStyle 设置或返回用于填充绘画的颜色.渐变或模式 strokeStyle 设置或返回用于笔触的颜色.渐变或模式 shadowColor 设置或返回用于阴影的颜 ...

  2. cxf所用的lib

    cxf_lib

  3. servlet中filter(过滤器)的学习使用

    servlet过滤器是小型的web组件,它能够处理传入的请求和传出的响应.Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理r ...

  4. CreateLiveCMSV4.0 漏洞,无需后台Get shell

    Title:CreateLiveCMSV4.0 漏洞,无需后台Get shell --2012-03-06 17:28 标题:CreateLive CMS Version 4.0.1006 漏洞,无需 ...

  5. hdu 4535 吉哥系列故事——礼尚往来

    http://acm.hdu.edu.cn/showproblem.php?pid=4535 错排公式:a[i]=(i-1)*(a[i-2]+a[i-1]): #include <cstdio& ...

  6. Cracking the coding interview--Q1.3

    原文 Given two strings, write a method to decide if one is a permutation of the other. 译文 给你两个字符串,写一个方 ...

  7. 更改Altium中PCB大小/精确确定板子尺寸

    使用原理图生成PCB后,Altium Designer会根据原理图大小自动生成一块黑色区域,还有一个在禁止布线层的方框,还有两段标注板子大小的线.下面说一下如何更改黑色区域的大小,还有如何精确确定板子 ...

  8. Linux系统编程(25)——终端

    在Linux系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端.控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动 ...

  9. 设计模式(十五):Iterator迭代器模式 -- 行为型模式

    1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...

  10. Android中几种常用的话框

    1.普通对话框: Builder alert=new AlertDialog.Builder(MainActivity.this); alert.setTitle("提示"); a ...