入門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相關方面的內容。(未完待續)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 下面帶大家繼續介紹ES6的新特性 開啟ES6的入門學習 簡寫模式 現在很多的框架多使用了ES6的簡寫特性(小程序,...
    kiaizi閱讀 220評論 0 2
  • ES6全面總結 ES6新特性概覽 本文基于lukehoban/es6features,同時參考了大量博客資料,具體...
    隨風而去隨遇而安閱讀 361評論 0 1
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,854評論 0 6
  • (a fork of Airbnb's Javascript Style Guide) Strikingly ES...
    飄零_zyw閱讀 1,190評論 1 2
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139