ECMAScript 6

ECMA 组织 前身是 欧洲计算机制造商协会

指定和发布脚本语言规范,标准在每年的 6 月份正式发布一次,作为当年的正式版本

这样一来,就不需要以前的版本号了,只要用年份标记就可以了.

ES6 ES6 既是一个历史名词,也是一个泛指“下一代 JavaScript 语言”,

含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,

而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准

一种新的语法从提案到变成正式标准,需要经历五个阶段。每个阶段的变动都需要由 TC39 委员会批准。

Stage 0 - Strawman(展示阶段)
Stage 1 - Proposal(征求意见阶段)
Stage 2 - Draft(草案阶段)        到这一阶段,差不多肯定是要包裹在以后的标准里面的
Stage 3 - Candidate(候选人阶段)
Stage 4 - Finished(定案阶段)

js 包含三个部分

  • ECMAScript         新功能的开发,语法的简化,性能优化

2009年发布了 ES5.1,并且成为 ISO 国际标准(ISO/IEC 16262:2011)

2015年6月 ES6       

还在实现中ing, 从开始 制定 到 最后 发布,正式通过,成为国际标准,整整用了 15 年

目标: 是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言

2016年ES7(变化不大,很多草案待实现)

2017年ES8

2018年ES9

扩展浏览器端

  • BOM        window
  • DOM        document

扩展服务器端

Node

Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。

除了那些默认打开的功能,还有一些语法功能已经实现了,但是默认没有打开。

  • 使用下面的命令,可以查看 Node 已经实现的 ES6 特性

$ node --v8-options | grep harmony

Babel 转码器

是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行。

这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。

比如

  • // 转码前
    input.map(item => item + 1); // 转码后
    input.map(function (item) {
    return item + 1;
    });


  • 'use strict';

严格模式,消除 js 语法的一些不合理、不严谨之处,减少一些怪异现象。

当浏览器识别,则进入严格模式解析运行。不识别的浏览器则忽略。

  • 变量必须先声明,在使用。
  • 禁止自定义的函数中的 this 指向 window

默认指向 window 时,this 被赋值为 undefined

如果再函数中需要访问 全局时,直接用 window 就好

  • eval();    将会创建一个作用域,即不会影响全局同名变量
  • 对象禁止出现同名属性
  • var person = {
    name: "Tom",
    age: 22, get age (){
    return this.age;
    },
    set age (newAge){
    this.age = newAge;
    }
    };
  • JSON

是一种轻量级的数据格式。        '{"name":"Ryen Toretto", "age": 22}'    属性名,必须双引号包裹

用来 作为前后台交互的数据格式        (前台发送请求,后台返回响应)

  • 使用
  • var obj = {name: "Tom", age: 18};
    
    var arr = [1, 3, 5, 7];
    
    var json = JSON.stringify(obj);    // 对象 处理成 JSON 数据
    console.log(json); json = JSON.stringify(arr); // 数组 处理成 JSON 数据
    console.log(json); // 解析 JSON
    var newArr = JSON.parse(json);
    console.log(newArr);
  • ES6 新加入 Object.create(obj);

将传入的新对象 作为 新对象 的原型对象        // var newObj = {}; newObj.__proto__ = person; return newObj;

  • 使用:
  • var newObj = Object.create(person, {
    age:{
    value: 22
    },
    sex:{
    value: "男"
    }
    });
  • ES6 对于数组的扩展

var arr = [1, 6 ,8, 6, 9, 8, 5, 3, 2];

  • 输出第一个 6 的下标索引

arr.findIndex(function(item){ item === 6; });            // 适用于 对象数据类型

等同于 arr.indexOf(6);      // 找不到返回 -1            适用于 基本数据类型

  • 输出最后一个 6 的下标索引

arr.lastIndexOf(6);

  • 输出元素所有元素的值和下标

arr.forEach(function(item, index){... ...});

  • 将所有元素 值+10,产生并返回这个新数据

var newArr = arr.map(function(item, index){ return item+10; });        // 不影响原数组

  • 过滤出 原数组 中值大于 4 的元素,作新数组返回

var newArr = arr.filter(function(item, index){ return item>4; });        // 不影响原数组, 将 返回值为 true 的元素组成一个新数组

  • 输出 数组 各个元素的累加和

var sum = arr.reduce(function(prev, cur){ return prev+cur; }, 0);        // 从 左 开始迭代。 第二参数,是指第一次进入,prev 的值

var sum = arr.reduceRight(function(prev, cur){ return prev+cur; }, 0);        // 从 右 开始迭代

ECMA Script 6_简单介绍的更多相关文章

  1. shell script 的简单介绍

    一 什么叫shell script (程序化脚本)? shell script 是利用 shell 的功能所写的一个 “程序”(program),这个程序是使用纯文本文件,将一些 shell 的语法与 ...

  2. ECMA Script 6_模块加载方案 ES6 Module 模块语法_import_export

    1. 模块加载方案 commonJS 背景: 历史上,JavaScript 一直没有模块(module)体系, 无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来. 其他语言都有这项功能: ...

  3. ECMA Script 6_异步编程之 Promise

    Promise 对象 异步编程 方案,已同步的方式表达异步的代码,解决回调地狱的问题 比传统的解决方案——回调函数和事件——更合理和更强大 是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步 ...

  4. ECMA Script 6_数值的扩展

    1. 二进制 和 八进制 新的表示法 前缀 0b(或0B) 表示 二进制 前缀 0o(或 0O )表示 八进制 console.log(0b111110111 === 503); // true co ...

  5. ECMA Script 6_数组的扩展_扩展运算符

    1. 扩展运算符 内部调用的是数据结构的 Iterator 接口, 因此只要具有 Iterator 接口的对象,都可以使用扩展运算符 ... 如 map,,,, [...arr] 扩展运算符(spre ...

  6. ECMA Script 6_必须要知道的基础

    ES6 为了保持兼容性,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性: 另一方面规定,let 命令.const 命令.class 命令声明的全局变量,不属于 window ...

  7. ECMA Script 6_解构赋值_模式匹配

    解构赋值 从数组中提取值,按照对应位置,对变量赋值 只要等号右边的值不是对象或数组,就先将其转为对象. 由于 undefined 和 null 无法转为对象,所以对它们进行解构赋值,都会报错 let ...

  8. ECMA Script 6_字符串_扩展_字符 是4字节还是2字节?_模板字符串

    ES6 字符串扩展 ES6 加强了对 Unicode 的支持,并且扩展了字符串对象 字符 的 Unicode 表示法 允许采用 \uxxxx 形式表示一个字符, 其中 xxxx 表示字符的 Unico ...

  9. ECMA Script 6_函数的扩展

    ES6规定只要函数参数使用了默认值.解构赋值.或者扩展运算符, 那么函数内部就不能显式设定为严格模式,否则会报错 1. 参数的默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面 函数 ...

随机推荐

  1. 如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件

    如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 最近初学Git,而且在使用的IDE是IntelliJ IDEA,发现IDEA在提交项目到本地仓库的时候,会把.idea文件 ...

  2. 设 $y_1(x), y_2(x)$ 是 $y''+p(x)y'+q(x)y=0$ 的两个解 ($p(x), q(x)$ 连续), 且 $y_1(x_0)=y_2(x_0)=0$, $y_1(x)\not\equiv 0$. 试证: $y_1(x)$, $y_2(x)$ 线性相关.

    设 $y_1(x), y_2(x)$ 是 $y''+p(x)y'+q(x)y=0$ 的两个解 ($p(x), q(x)$ 连续), 且 $y_1(x_0)=y_2(x_0)=0$, $y_1(x)\n ...

  3. python 排序之sort

    #coding:utf-8 #求列表的第二大值 list_test =[6,2,4,6,1,2,3,4,5] list_test.sort() print list_test[-2] "&q ...

  4. MarkDown 的两种页内跳转方法!!!!!

    页面内跳转就是点击某个文本,能够跳转到页面里指定的其他地方,经常用于目录中. 第一种是利用Html5 比如点击Feature, 跳转到features中 MarkDown: [Feature](#1) ...

  5. thymeleaf时间格式化

    Thymeleaf模板时间格式表达式     ${#dates.format(date, 'dd/MMM/yyyy HH:mm')} 例如: <input name="enroDate ...

  6. C#VS2017添加ReportViewer控件

    安装完vs2017之后我们进行添加Report Viewer控件: 1. 点击Tools -> Extensions and Updates... 2. 在新窗口搜索栏中输入rdlc后搜索,结果 ...

  7. angularjs异步处理 $q.defer()

    看别人的项目中有用到 var def = $q.defer()返回一个deferred异步对象def 当代码逻辑遇到 def.resolve(rtns); deferred状态为执行成功,返回rtns ...

  8. 资本寒冬下的android面经

    在2018年10月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真是战 ...

  9. Connet Scanning

    1.connect scanning with Scapy,   Tools that perform  Tcp scans operate by performing a full there-wa ...

  10. 4.9cf自训9..

    cf401D 状态压缩dp好题,每次把新加入集合的数字放在最后即可 /* 它可以通过重新排列数字n, 它没有任何前导零, x除以m后的余数等于0. 每次把新加的数放在最后 dp[i][j]表示状态i下 ...