入门ES6基础内容

在2015年2月20号 ECMAScript 第六版就正式推出了,这门语言一直保持稳定快速的发展而且新功能也在慢慢被现在主流的 JavaScript 引擎所接受。


代码转换

能够实现 ES6 到 ES5 的代码转换多亏了 Babel (以前叫 6to5) 以及 Traceur 之类的项目。这些转换器 (更准确地说是源代码到源代码的编译器) 可以把你写的符合 ECMAScript 6 标准的代码完美地转换为 ECMAScript 5 标准的代码,并且可以确保良好地运行在所有主流 JavaScript 引擎中。
我们这里目前在使用 Babel,主要是因为它对 ES6 的支持程度比其它同类更高,而且 Babel 拥有完善的文档和一个很棒的在线交互式编程环境

分享一种简单的方法

a.
首先通过npm下载 (或者到官网手动下载)

 $ npm install -g traceur

b.
引入

<script src="../traceur.js" type="text/javascript"></script>  <!-- 将Traceur编译器用于网页 -->

c.

<script>new traceur.WebPageTranscoder(document.location.href).run();  </script> 
 <script type="module">
        可以在里面编写代码
</script>

当然还有更多的方法,欢迎互相学习!

开启ES6的入门学习

let

let是ES6中新增关键字。
它的作用类似于var,用来声明变量,但是所声明的变量,只在let命令所在的代码块内有效。(简单理解,let有有作用域)

 if(true){
        var a = 1;
       let b = 2;
    }
    document.write(a);
    document.write(b);  // 报错:ReferenceError: b is not defined
    for循环的计数器,就很合适使用let命令。
            var a = [];
            for (let i = 0; i < 10; i++) {
              a[i] = function () {
                document.write(i);
              };
            }

const

1.声明的是常量,一旦声明,值将是不可变的。

       const PI = 3.1415;
     console.log(PI);//3.1415
     PI = 3;
     console.log(PI);//3.1415

2.const 也具有块级作用域

if (true) {
  const max = 5;
}
document.write(max);  // ReferenceError 常量MAX在此处不可得

3.const不可以重复声明

var message = "Hello!";
let age = 25;
// 以下两行都会报错
const message = "Goodbye!";
const age = 30;

repeat

repeat表示重复几次

  var str = "x";
    console.log(str.repeat(3));// "xxx"
    var str1 = "hello";
    str1.repeat(2) // "hellohello"

模板字符串

``两个点(一般在左上角1前面)

        let first = '我叫张三';
        let last = '我是代码搬砖工';
        document.write(first+'--'+last);//拼接字符串方法
        document.write(`${first}---${last}`);//模板方法

ES6的默认参数

括号之间可以写默认值,若无参数,则是默认值;
1.运用传统的默认参数

        function sayHello(name){
            //传统的指定默认参数的方式
            var name = name|| 'grape';
            document.write('Hello '+name);
        }
        sayHello();  //输出:Hello grape
        sayHello('我是代码搬砖工');  //输出:Hello我是代码搬砖工

2.运用ES6的默认参数

        function sayHello2(name='grape'){
            document.write(`Hello ${name}`);  /*注意引号*/
        }
        sayHello2();  //输出:Hellogrape
        sayHello2('我是代码搬砖工');  //输出:Hello我是代码搬砖工

三个点运算符 ...

括号之间可以写默认值,若无参数,则是默认值;

  1. “...” 能很好的将数组内的数据,与变量一一匹配(当然可以是更多的数据)
        var people=['张三','李四','王五'];
            //sayHello函数本来接收三个单独的参数people1,people2和people3
            function sayHello(people1,people2,people3){
                document.write(`Hello ${people1},${people2},${people3}`);
            }
            //但是我们将一个数组以拓展参数的形式传递,它能很好地映射到每个单独的参数
            sayHello(...people);   //输出:Hello 张三,李四,王五

2.拼接数组

              var arr1 = ['a', 'b'];
            var arr2 = ['c','b'];
            var arr3 = ['d', 'e'];
// ES5的合并数组
            arr1.concat(arr2, arr3);
            // [ 'a', 'b', 'c', 'd', 'e' ]
// // ES6的合并数组
                console.log([...arr1, ...arr2, ...arr3]);
             // [ 'a', 'b', 'c', 'd', 'e' ]

箭头函数=>

  1. 箭头函数是使用=>语法的函数简写形式。这在语法上与 C#、Java 8 和 CoffeeScript 的相关特性非常相似。
    ES5写法
                var array = [1, 2, 3];
                // //传统写法
                array.forEach(function(v, i, a) {
                    document.write(v);
                });

ES6方法

              array.forEach(v => document.write(v));
              array.forEach((v,i, a) => document.write(v));//也可以多个参数

2.它们同时支持表达式体和语句体。与(普通的)函数所不同的是,箭头函数和其上下文中的代码共享同一个具有词法作用域的this
ES5的方法

           var person = {
          _name: "张三",
          _friends: ["Amy", "Bob", "Cinne", "Dylan", "Ellen"],
          printFriends:function(){
              var that=this;
                this._friends.forEach( function(value, index) {
            //因为this的指向不同,所以无法再下面的语句中直接使用this._friends
                document.write(`${that._name} 的好朋友  ${value}  <br/>`)
    });
          }
        }
        person.printFriends();

ES6的方法

          var person = {
          _name: "张三",
          _friends: ["Amy", "Bob", "Cinne", "Dylan", "Ellen"],
          printFriends:function(){
                this._friends.forEach((value,key)=>document.write(this._name+'的好朋友'+value+' <br/>'));
                //.bind(this)  表示把当前this 给绑定的方法
          }
        }
        person.printFriends();

目前是比较常用的ES6,简单的分享一下自己的理解,后期会不定期更新ES6相关方面的内容。(未完待续)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,475评论 4 372
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,744评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,101评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,732评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,141评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,049评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,188评论 2 320
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,965评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,716评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,867评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,341评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,663评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,376评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,200评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,990评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,179评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,979评论 2 279

推荐阅读更多精彩内容

  • 下面带大家继续介绍ES6的新特性 开启ES6的入门学习 简写模式 现在很多的框架多使用了ES6的简写特性(小程序,...
    kiaizi阅读 195评论 0 2
  • ES6全面总结 ES6新特性概览 本文基于lukehoban/es6features,同时参考了大量博客资料,具体...
    随风而去随遇而安阅读 336评论 0 1
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,808评论 0 6
  • (a fork of Airbnb's Javascript Style Guide) Strikingly ES...
    飘零_zyw阅读 1,130评论 1 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,112评论 18 139