欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript ECMAScript版本介绍

程序员文章站 2022-03-12 15:33:46
1. 介绍 1.1 什么是ECMAScript ECMAScript,简称ES,是由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)按照ECMA-262和ISO/IEC 16262标准制定的一种脚本语言规范。 ......

1. 介绍

1.1 什么是ecmascript

ecmascript,简称es,是由ecma国际(前身为欧洲计算机制造商协会,英文名称是european computer manufacturers association)按照ecma-262和iso/iec 16262标准制定的一种脚本语言规范。

1.2 javascript 与 ecmascript 的关系

javascript是按ecmascript规范实现的一种脚本语言,其他的还有jscript、actionscript。

这三种语言还提供了ecma规范外的额外功能。

1.3 ecmascript版本

截止到2017年年底,ecmascript共发布了8个版本:

ecmascript 1

1997年06月:发布首版。

ecmascript 2

1997年06月:修改规范完全符合iso/iec 16262国际标准。

ecmascript 3

1999年12月:增加正则、更好的文字处理、新的控制语句、try/catch异常处理、更加明确的错误定义,数字输出格式等等。

ecmascript 4

放弃发布。

ecmascript 5

2009年12月:完善了ecmascript 3版本、增加"strict mode,"(严格模式)、以及新的功能,如getter和setter、json库支持和更完整的对象属性。

ecmascript 5.1

2011年06月:使规范更符合iso/iec 16262:2011第三版。

ecmascript 6

2015年06月:第六版的名字有很多,可以叫ecmascript 6(es6),也可以叫ecmascript 2015(es2015)。

此版本增加了非常重要的东西:let、const、class、modules、 arrow functions,、template string, destructuring, default, rest argument、binary data、promises等等。

规范地址:

es6及以上的教程可参考babel提供的: 

ecmascript 7

2016年06月:也被称为ecmascript 2016。完善es6规范,还包括两个新的功能:求幂运算符(*)和array.prototype.includes方法。

规范地址:

ecmascript 8

2017年06月:增加新的功能,如并发、原子操作、object.values/object.entries、字符串填充、promises、await/asyn等等。

规范地址:

2. 浏览器与js新特性

2.1 查看浏览器支持情况

js的每隔一段时间就会出新的特性,而浏览器只有不断的升级才能满足这些,而且同一个浏览器各版本对新特性的支持情况也不一样。

网站: 提供了查看某个功能浏览器的支持情况。

如es6规范新增加的arrow function(箭头函数)的支持如下:

JavaScript ECMAScript版本介绍

可以看到ie所有版本完全不支持,chrome 45版本才开始支持。

2.2 babel

想使用js的新特性,又想兼容旧浏览器版本,那么就需要一种转换工具:把js的新特性代码转换为旧浏览器可以支持的js代码。而babel就是这么一个工具。

babel,官方介绍一个javascript编译器。说简单点就是把使用es6及以上的特性的代码转换为对应的es5代码,以使旧浏览器可以运行。

网址:

在gulp中使用babel

babel除了自身提供babel built-ins外,还提供了其他构建工具的版本,本示例以gulp为例。

1) 安装gulp-babel

  1. npm install --save-dev gulp-babel babel-core babel-preset-env

2) 编写一段es6的代码

创建一个app.js文件,并写入以下代码:

  1. var sayhello = (username, age) => {
  2. console.log(username + ' age is ' + age);
  3. };

3) 编写gulp文件

  1. var gulp = require('gulp');
  2. var babel = require('gulp-babel');
  3.  
  4. gulp.task('default', function() {
  5. return gulp
  6. .src('js/app.js')
  7. .pipe(
  8. babel({
  9. presets: ['env']
  10. })
  11. )
  12. .pipe(gulp.dest('dist'));
  13. });

4) 运行gulp后的结果

  1. 'use strict';
  2.  
  3. var sayhello = function sayhello(username, age) {
  4. console.log(username + ' age is ' + age);
  5. };
end
菜单加载中...

javascript ecmascript版本介绍的更多相关文章

  1. xamarin android教程android基本知识版本介绍与系统介绍

    xamarin android教程android基本知识版本介绍与系统介绍 xamarin android教程android基本知识版本介绍与系统介绍,开发andriod有时候不像ios一样轻松,因为 ...

  2. cloudera hadoop什么是cdh及cdh版本介绍

    本文引用自:cloudera hadoop什么是cdh及cdh版本介绍http://www.aboutyun.com/thread-6788-1-1.html(出处: about云开发) 云技术新兴的 ...

  3. mysql学习之-三种安装方式与版本介绍

    mysql版本介绍 mysql分alpha,beta,rc,ga四个版本. alpha  暗示这是一个以展示新特性为目的的版本,存在比较多的不稳定因素,还会向代码中添加新新特性beta 以后的beta ...

  4. hadoop发行版本介绍

    前言 从2011年开始,中国进入大数据风起云涌的时代,以hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界及厂商,所有数据软件,无一不向hadoop靠拢.hadoop也从小众的高富帅领域 ...

  5. ubuntu版本介绍

    转自ubuntu版本介绍 经常有人问起ubuntu的版本选择问题,论坛中虽有帖子提及,但不是很详细,不集中,我就尝试把ubuntu上的这点东东翻译一下,供大家参考,水平有限,敬请包涵.指正.  ubu ...

  6. linux主要发行版本介绍

    linux主要发行版本介绍 1.red hat linux red hat是一个比较成熟的linux版本,无论在销售还是装机量上都比较可观.该版本从4.0开始同时支持intel.alpha及sparc ...

  7. javascript date对象介绍

    原文:javascript date对象介绍 date 日期和时间对象 1. 介绍 date对象,是操作日期和时间的对象.date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new ...

  8. eclipse各版本介绍

    记录下吧!以免以后下载时候又不知道下载那个: eclipse ide for java developers 是为java开发的 eclipse ide for java ee developers  ...

  9. android studio的beta, canary, dev, stable四种channel版本介绍、分析与选择

    一.概述 在android studio下载官网上,有如下介绍: ` android studio's built-in update mechanism can be set to receive ...

随机推荐

  1. gulp-uglify 与gulp.watch()配合使用时遇到的重复压缩问题

    今天学习gulp时候,用到gulp-uglify压缩js模块,遇到的一个问题-当用gulp.watch来监听js文件的变动时出现重复压缩的问题 目录结构如下: gulpfile.js代码如下: var ...

  2. linux-磁盘及网络io工作方式解析

    pio与dma 有必要简单地说说慢速i/o设备和内存之间的数据传输方式. pio我们拿磁盘来说,很早以前,磁盘和内存之间的数据传输是需要cpu控制的,也就是说如果我们读取磁盘文件到内存中,数据要经过c ...

  3. [.net 面向对象编程基础] (21) 委托

    [.net 面向对象编程基础] (20)  委托 上节在讲到linq的匿名方法中说到了委托,不过比较简单,没了解清楚没关系,这节中会详细说明委托. 1. 什么是委托? 学习委托,我想说,学会了就感觉简 ...

  4. [持续更新]unsatisfiedlinkerror常见问题及解决方案

    想必很多开发者和我们一样,遇到过许多unsatisfiedlinkerror的困难,着实令人头疼,现在总结一下,希望能帮助更多的人. 常见错误 lib库不同目录下的so文件参差不齐. lib库目录下的 ...

  5. $.ajax()方法详解及实例

    1.url: 要求为string类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为string类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...

  6. mybatis+springmvc+easyui (datagirl)实现分页

    页面展示效果. 页面代码: <%@ page contenttype="text/html;charset=utf-8" language="java"  ...

  7. wince开机logo的实现(usb下载图片到nandflash)

    wince开机启动logo使用eboot读取nandflash中的图片数据,然后显示的方式.对于开机logo的方式网友http://jazka.blog.51cto.com/809003/664131 ...

  8. detangle c++ symbols

    hust$ c++filt  _zn1ac2ev hust$a::a()

  9. was维护常用操作

    0.was学习地址: http://www.open-open.com/doc/list/276?pn=1http://www.doc88.com/p-7498799200332.htmlhttp:/ ...

  10. wcf入门教程(三)属性标签

    属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的一部分,以及传输对象的定义.如果已经有所了解, ...