【问题标题】:What is ECMAScript?什么是 ECMAScript?
【发布时间】:2011-05-15 05:24:33
【问题描述】:

在 Visual Studio 中,当我将脚本类型设置为 JavaScript 时,这会作为智能感知中的一个选项出现。

快速的 Google 搜索得到了蹩脚的结果,让我相信这不是很受欢迎。

  • 这是什么?
  • 有人用吗? (<script type="text/ecmascript">)
  • 为什么?

【问题讨论】:

标签: javascript


【解决方案1】:

JavaScript 是 ECMAScript 的一个子集。 JavaScript 基本上是以 ECMAScript 为核心,但建立在它之上。 ActionScript、JavaScript、JScript 等语言都以 ECMAScript 为核心。作为比较,AS/JS/JScript 是 3 款不同的汽车,但它们都使用相同的引擎……虽然它们的每一个外观都不同,但都对它们进行了多次修改以使其独一无二。

历史是,Brendan Eich 创建了 Mocha,后来变成了 LiveScript,然后是 JavaScript。 Netscape 将 JavaScript 提交给 Ecma International,后者开发了标准,并将其重命名为 ECMA-262 aka ECMAScript。

请务必注意,Brendan Eich 的“JavaScript”与 ECMAScript 方言的 JavaScript 不同。他构建了 core 语言,该语言被重命名为 ECMAScript,这与现在浏览器供应商实施的 JavaScript 不同。

http://en.wikipedia.org/wiki/ECMAScript

【讨论】:

  • 如果以 ECMAScript 为核心,这难道不让 Javascript 成为 ECMAScript 的子集吗?
  • JavaScript(历史上)具有 ECMAScript 所没有的东西。 JavaScript(历史上试图)拥有 ECMAScript 所拥有的一切。因此帖子是正确的,ECMAScript 是 JavaScript 的一个子集。然而,两者都保持得非常接近(虽然 ActionScript 不再被视为一种真正的 ECMAScript 语言,但它已经出现了如此大的分歧,尽管它确实有其根源)。 ES 和 JS 这两个术语几乎可以互换。
  • 我认为说 “ECMAScript 是 JavaScript 的子集”并不准确。 相反,您引用的 Wikipedia 文章表明 ECMAScript 是 标准,并且 JavaScript 是该标准(with extensions) 的众所周知的实现
  • 我想你的意思是ECMAScript is a superset of Javascript
  • 因为 Javascript 实现了 ECMAScript 并在其之上构建,所以我会说 Javascript 是 ECMAScript 的超集。
【解决方案2】:

ECMAScript 是一个标准。 JavaScript 和 ActionScript 是 ECMAScript 标准的众所周知的实现

http://en.wikipedia.org/wiki/ECMAScript

【讨论】:

    【解决方案3】:

    ECMAScript = ES:

    • ECMAScript 是脚本语言的标准。

    • Javascript 等语言基于 ECMAScript 标准。

    • ECMA 标准基于多种原始技术,其中最著名的是 JavaScript(Netscape)和 JScript(Microsoft)。

    • ECMA 表示欧洲计算机制造商协会


    另一边:


    JavaScript = JS:

    • JavaScript 是 ECMAScript 标准最流行的实现。

    • Javascript 的核心功能基于 ECMAScript 标准, 但 Javascript 还具有其他未包含的附加功能 ECMA 规范/标准。

    • ActionScript 和 JScript 是另一种实现 ECMAScript 的语言。

    • JavaScript 已提交给 ECMA 进行标准化,但由于名称 Javascript 的商标问题,该标准被称为 ECMAScript。

    • 每个浏览器都有一个 JavaScript 解释器。


    有关此结帐的更多详细信息,请查看我的完整答案What is the difference between JavaScript and ECMAScript?

    【讨论】:

    • 几乎每个浏览器都支持 JavaScript,但也有很多 CLI 浏览器,如 links 和 lynx 不支持,除此之外还有:links2、w3m、elinks 和 edbrowse。大多数 CLI 浏览器也不支持 JS。
    【解决方案4】:

    ECMA 代表 - 欧洲计算机制造商协会。 ECMAScript 是脚本语言的标准。它指定脚本语言应提供的核心功能以及应如何实现这些功能。 Javascript 最初是在 Netscape 中创建的,他们希望将语言标准化。因此,他们将该语言提交给欧洲计算机制造商协会 (ECMA) 进行标准化。但是,Javascript 的名称存在商标问题,因此该标准被称为 ECMAScript,这也是它今天的名称。

    因此,您可以使用任何实现 ECMA 标准的脚本语言,因为当您指定 (<script type="text/ecmascript">) 时,Web 浏览器支持 ECMAScript 解释。

    【讨论】:

      【解决方案5】:

      ECMA 是标准化 JavaScript 的组织。他们将语言命名为 ECMAScript,但“JavaScript”是赢得“名称竞赛”的术语

      【讨论】:

        【解决方案6】:

        这里是关于这个话题的不同观点。这或多或少来自经验,我无法引用任何内容。 任何 JavaScript 验证器和所有使用 JavaScript 的人都会告诉你这一点

        alert("hello World");
        

        是有效的 JavaScript。我也同意。

        但是,ECMAScript 验证器可能会告诉您它无效,因为 alert() 不是 ECMAScript 的一部分,而是用于浏览器的 JavaScript 的一个典型功能。 JavaScript 有许多特性,这些特性只在浏览器环境中才有意义,f.i. window.navigator、window.document、WebSocket、navigator.geolocation。 甚至有人会说,这不是 JavaScript 的一部分,而是 HTML5 的一部分,这是不正确的,因为 HTML5 只是标记语言。然而,这些花哨的新功能通常被称为 HTML5,即使它们是用 JavaScript 实现的。

        JavaScript 也可用于服务器端脚本。那么所有的地理定位或媒体 api 都没有意义。因此,用于服务器端脚本的 JavaScript 再次接近于 ECMAScript,它没有这种典型的浏览器功能。

        我真的不知道,Math 对象(例如 Math.sqrt(9))是否是 ECAMScript 的一部分,或者 ECMAScript 是否真的只是定义了语言的语法并且没有任何内置功能。但是一个 ECMAScript 验证器接受 Math.sqrt(9) 作为有效的 ECMAScript,而 var test=window.document;未能通过 ECMA 验证。

        尽管下面将其链接到 JavaScript 文档,但我认为这是 ECMAScript 的内置功能集(对象和函数):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects

        所以在我看来,JavaScript 与浏览器的联系非常紧密,而 ECMAScript 实际上只有一组非常基本的功能(如果有的话)。

        【讨论】:

          猜你喜欢
          • 2011-10-10
          • 1970-01-01
          • 2014-03-02
          • 2015-03-29
          • 1970-01-01
          • 1970-01-01
          • 2015-08-13
          • 1970-01-01
          相关资源
          最近更新 更多