es6 订阅
ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言 [1]  。另外,一些情况下ES6也泛指ES2015及之后的新增特性,虽然之后的版本应当称为ES7、ES8等。 展开全文
ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言 [1]  。另外,一些情况下ES6也泛指ES2015及之后的新增特性,虽然之后的版本应当称为ES7、ES8等。
信息
简    称
ES6
类    型
前端语言
通过日期
2015年6月
性    质
JavaScript语言的标准
正式名字
ECMAScript 2015(ES2015)
外文名
ECMAScript 6
ECMAScript 6发展历史
2000年,ECMAScript 4.0开始酝酿。这个版本最后没有通过,但是它的大部分内容被ECMAScript6继承了。因此,ECMAScript6制定的起点其实是2000年。2007年10月,ECMAScript 4.0草案发布,本来预计2008年8月发布正式版本。但是,各方对于是否通过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激烈,ECMA开会决定,中止ECMAScript 4.0的开发,将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就改名为ECMAScript 5。2009年12月,ECMAScript 5.0正式发布。Harmony项目则一分为二,一些较为可行的设想定名为 JavaScript.next继续开发,后来演变成ECMAScript 6;一些不是很成熟的设想,则被视为JavaScript.next.next,在更远的将来再考虑推出。2011年,ECMAScript 5.1发布后开始6.0版的制定。2013年3月,ECMAScript 6草案冻结,不再添加新功能。新的功能设想将被放到ECMAScript 7。2013年12月,ECMAScript 6草案发布。然后是12个月的讨论期,听取各方反馈。由于这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能。标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的6月份,草案就自然变成了新一年的版本。2015年6月,ECMAScript 6(ES6)正式通过,成为国际标准,正式名称是“ECMAScript 2015”(简称ES2015)。2016年6月,小幅修订的“ECMAScript 2016”(简称ES2016或ES7)标准发布,相当于ES6.1版,因为两者的差异非常小(只新增了数组实例的includes方法和指数运算符),基本上是同一个标准 [1]  。
收起全文
精华内容
下载资源
问答
  • ES6

    2020-10-11 14:40:01
    【转载】 ES6中的简写语法 ES6解构嵌套对象

    ES6中的简写语法
    ES6解构嵌套对象
    ES6解构数组解构
    ES6之展开运算符(…)
    ES6有哪些新特性
    ES6数组及编程题


    一、let和const命令
    二、变量的解构赋值
    三、函数的默认参数
    四、模板字符串
    五、箭头函数
    六、数组的扩展(扩展运算符)
    七、对象的扩展
    1、属性的简洁表示法
    2、属性名表达式

    解构赋值中小括号的作用

    展开全文
  • es6

    2017-12-05 19:00:00
    es6学习http://es6.ruanyifeng.com/ es6特性练习:http://es6katas.org/ es6常用部分及重点学习:https://segmentfault.com/a/1190000004365693 转载于:https://www.cnblogs.com/intangible/p/7988827.html...

    es6学习 http://es6.ruanyifeng.com/

     

    es6特性练习:http://es6katas.org/

     

    es6常用部分及重点学习:https://segmentfault.com/a/1190000004365693

    转载于:https://www.cnblogs.com/intangible/p/7988827.html

    展开全文
  • es6之扩展运算符 三个点(...)

    万次阅读 多人点赞 2018-09-30 19:09:23
    es6之扩展运算符 三个点(...)es6之扩展运算符 三个点(...)对象的扩展运算符数组的扩展运算符总结 es6之扩展运算符 三个点(…) 对象的扩展运算符 理解对象的扩展运算符其实很简单,只要记住一句话就可以: ...

    es6之扩展运算符 三个点(…)

    对象的扩展运算符

    理解对象的扩展运算符其实很简单,只要记住一句话就可以:

    对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

    let bar = { a: 1, b: 2 };
    let baz = { ...bar }; // { a: 1, b: 2 }
    

    上述方法实际上等价于:

    let bar = { a: 1, b: 2 };
    let baz = Object.assign({}, bar); // { a: 1, b: 2 }
    

    Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)

    Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。(如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性)。

    同样,如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。

    let bar = {a: 1, b: 2};
    let baz = {...bar, ...{a:2, b: 4}};  // {a: 2, b: 4}
    

    利用上述特性就可以很方便的修改对象的部分属性。在redux中的reducer函数规定必须是一个纯函数(如果不是很清楚什么是纯函数的可以参考这里),reducer中的state对象要求不能直接修改,可以通过扩展运算符把修改路径的对象都复制一遍,然后产生一个新的对象返回。

    这里有点需要注意的是扩展运算符对对象实例的拷贝属于一种浅拷贝。肯定有人要问什么是浅拷贝?我们知道javascript中有两种数据类型,分别是基础数据类型引用数据类型基础数据类型是按值访问的,常见的基础数据类型NumberStringBooleanNullUndefined,这类变量的拷贝的时候会完整的复制一份;引用数据类型比如Array,在拷贝的时候拷贝的是对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化,比如:

    let obj1 = { a: 1, b: 2};
    let obj2 = { ...obj1, b: '2-edited'};
    console.log(obj1); // {a: 1, b: 2}
    console.log(obj2); //  {a: 1, b: "2-edited"}
    

    上面这个例子扩展运算符拷贝的对象是基础数据类型,因此对obj2的修改并不会影响obj1,如果改成这样:

    let obj1 = { a: 1, b: 2, c: {nickName: 'd'}};
    let obj2 = { ...obj1};
    obj2.c.nickName = 'd-edited';
    console.log(obj1); // {a: 1, b: 2, c: {nickName: 'd-edited'}}
    console.log(obj2); // {a: 1, b: 2, c: {nickName: 'd-edited'}}
    

    这里可以看到,对obj2的修改影响到了被拷贝对象obj1,原因上面已经说了,因为obj1中的对象c是一个引用数据类型,拷贝的时候拷贝的是对象的引用。

    数组的扩展运算符

    扩展运算符同样可以运用在对数组的操作中。

    • 可以将数组转换为参数序列
    function add(x, y) {
      return x + y;
    }
    
    const numbers = [4, 38];
    add(...numbers) // 42
    
    • 可以复制数组

    如果直接通过下列的方式进行数组复制是不可取的:

    const arr1 = [1, 2];
    const arr2 = arr1;
    arr2[0] = 2;
    arr1 // [2, 2]
    

    原因上面已经介绍过,用扩展运算符就很方便:

    const arr1 = [1, 2];
    const arr2 = [...arr1];
    

    还是记住那句话:扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中,这里参数对象是个数组,数组里面的所有对象都是基础数据类型,将所有基础数据类型重新拷贝到新的数组中。

    • 扩展运算符可以与解构赋值结合起来,用于生成数组
    const [first, ...rest] = [1, 2, 3, 4, 5];
    first // 1
    rest  // [2, 3, 4, 5]
    

    需要注意的一点是:

    如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。

    const [...rest, last] = [1, 2, 3, 4, 5];
    // 报错
    const [first, ...rest, last] = [1, 2, 3, 4, 5];
    // 报错
    
    • 扩展运算符还可以将字符串转为真正的数组
    [...'hello']
    // [ "h", "e", "l", "l", "o" ]
    
    • 任何 Iterator 接口的对象(参阅 Iterator 一章),都可以用扩展运算符转为真正的数组

    这点说的比较官方,大家具体可以参考阮一峰老师的ECMAScript 6入门教程

    比较常见的应用是可以将某些数据结构转为数组,比如:

    // arguments对象
    function foo() {
      const args = [...arguments];
    }
    

    用于替换es5中的Array.prototype.slice.call(arguments)写法。

    总结

    扩展运算符的用法就说到这里,介绍的不全但都是些最常见的用法。

    下面的是我的公众号二维码图片,欢迎关注。
    在这里插入图片描述

    展开全文
  • ES6练习:学习ES6-源码

    2021-02-15 21:06:46
    ES6练习:学习ES6
  • 使用ES6新特性async await进行异步处理

    万次阅读 多人点赞 2018-07-12 15:56:30
    我们往往在项目中会遇到这样的业务需求,就是首先...那是相当恶心的,下面我就来讲一下如何使用ES6的新特性async await进行异步处理,使上述情况就好像写同步代码一样,首先我们先举个例子: 先写上json文件: cod...

    我们往往在项目中会遇到这样的业务需求,就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,请求少了还好说,如果多了,就要一层一层的嵌套,就好像有点callback的写法了,那是相当恶心的,下面我就来讲一下如何使用ES6的新特性async await进行异步处理,使上述情况就好像写同步代码一样,首先我们先举个例子:
    先写上json文件:
    code.json:

    {
        "code":0,
        "msg":"成功"
    }
    

    person.json:

    {
        "code":0,
        "list":[
            {
                "id":1,
                "name":"唐僧"
            },
            {
                "id":2,
                "name":"孙悟空"
            },
            {
                "id":3,
                "name":"猪八戒"
            },
            {
                "id":4,
                "name":"沙僧"
            }
        ]
    }
    

    比如我们有两个请求,如下,这里用的axios:

     function getCode(){
          return axios.get('json/code.json');
      }
     function getlist(params){
          return axios.get('json/person.json',{params})
      }
    

    我们第二个请求获取列表的时候需要使用第一个请求得到的code值,只有code值为0时,才能请求,而且当做参数传进去,那么我们看一下常规的做法吧

    function getFinal(){
    	  console.log("我是getFinal函数")
          getCode().then(function(res){
             if(res.data.code == 0){
                   console.log(res.data.code);
                     var params = {
                          code:res.data.code
                      }
                   getlist(params).then(function(res){
                        if(res.data.code == 0){
                             console.log(res.data.list);
                           }
                       })
                    }
              })
          }
      getFinal();
    

    看结果
    这里写图片描述
    虽然结果出来了,可是这种写法真的挺难受的,下面来一个async await的写法

    async function getResult(){
                console.log("我是getResult函数")
                let code = await getCode();
                console.log(code.data.code);
                if(code.data.code == 0){
                    var params = {
                        code:code.data.code
                    }
                    let list = await getlist(params);
                    console.log(list.data.list);
                }
            }
    getResult();
    

    下面看结果
    这里写图片描述
    当然还剩最后一点,处理异常,可以加上try catch

    async function getResult(){
                console.log("我是getResult函数")
                try{
    				let code = await getCode();
    	            console.log(code.data.code);
    	            if(code.data.code == 0){
    	                var params = {
    	                    code:code.data.code
    	                }
    	                let list = await getlist(params);
    	                console.log(list.data.list);
    	            }
    			}catch(err){
    				console.log(err);
    			}
            }
    getResult();
    

    个人认为做vue项目的时候,如果对于异常没有特殊处理,可以不加try catch,因为打印出来的错误跟vue自己报的错误是一样的,而且还是黑的字体,不如醒目的红色来的痛快啊!当然如果要对错误进行特殊处理,那么就加上吧

    代码风格是不是简便了许多,而且异步代码变成了同步代码,下面我稍微讲一下后者写法的代码执行顺序

    首先在 function 前面加 async 用来说明这个函数是一个异步函数,当然,async是要和await配合使用的,第一个请求

    let code = await getCode();
    

    await 意思是等一下,等着getCode()这个函数执行完毕,得到值后再赋值给code,然后再用code的值进行下一步操作,就是这么简单!!!赶紧去改代码!!

    展开全文
  • 理解-ES6:提醒es6
  • es6:ES5与ES6参考-源码

    2021-02-05 01:36:38
    es6:ES5与ES6参考
  • ES6 构建工具,ES6项目构建框架,es6开发初始架构编译项目, 学习ES6项目, ES6学习笔记, gulp, webpack, babel
  • ES6个人笔记记录——数组扩展

    万次阅读 2020-05-08 11:47:51
    // 扩展运算符 console.log(1,...[2,3,4],5); // ES5 console.log(Math.max.apply(null,[14,2...// ES6 let { max } = Math; console.log(max(...[14,2,48])); // ES5 var arr1 = [0,1,2]; var arr2 = [3,4,5]; co...
  • ES6代码转ES5教程(babel安装使用教程)

    万次阅读 2020-08-11 15:00:34
    Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。下面是一个例子。 // 转码前 input.map(item ...
  • 文章目录什么是ES6为什么要使用ES6 什么是ES6 ES的全称是 ECMAScript, 它是由ECMA国际标准化组织制定的一项脚本语言的标准化规范。 ES6 实际上是一个泛指,泛指 es2015 即后需的版本 为什么要使用ES6 每一次标准的...
  • ECMAScript 2015(ES6) 在EcmaScript 2015(ES6)中进行的操作。 키노트 학습자료
  • es6features-zhCN:es6features中文版
  • es6 Map

    千次阅读 2019-06-03 09:37:39
    es6 map
  • ES6特性

    千次阅读 2019-06-11 21:22:46
    ES6特性
  • ES6-指南:to学习ES6概念的综合指南
  • guia-basico-ES6:Quer aprender es6吗?
  • ES6解构赋值: ES6... :ES6三点

    千次阅读 2020-04-02 14:39:26
    es6的特性,主要用于 数组和对象的析构 直接上问题: 因为chrome低版本(用的55版本)不支持es6...的下面这种写法, 需要转为es5写法 function calcLinePaths() { . . . . // 省略以上代码 return { ......
  • 关于ES6

    2020-11-10 22:18:36
    1 什么是es6 ES的全称是ECMAScript,它是由ECMA国际标准化组织制定的一项脚本语言的标准化规范。 2为什么要使用es6 ES5不能满足目前前端越来越复杂,庞大的现状,可以说已经过时了,ES6是对ES5的增强和升级。 1....
  • es6完整版本

    2018-12-26 16:28:11
    最完整的es6,适合想详细学习es6的前端开发人员深入学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,496
精华内容 56,198
关键字:

es6