ES6語法核心

概念:

1.ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標準蠕蚜。
????????
??2.因為當前版本的ES6是在2015年發(fā)布的状囱,所以又稱ECMAScript 2015扔嵌。
????????
??3.雖然目前不是所有瀏覽器都兼容,但是很多程序員實際項目當中已經開始使用ES6開發(fā)了;

依賴:

npm(包管理工具)

-v查看版本

-g全局安裝???
????在mac的終端里,需要添加 sudo 前綴,輸入密碼,才能全局安裝;

npm init 初始化
????會創(chuàng)建一個 package.json 文件 (包管理文件)

npm install jquery????????
????安裝jquery(等工具)

--save?????
????將配置,保存到 package.json 文件的依賴中去;?????
????(依賴:項目所需要的工具,當項目初始化(npm install)的時候,會主動幫我們安裝依賴里面的工具)

npm install jquery@1.12.4 --save
????可以使用 @ 來安裝指定版本

Babel轉碼器

Babel是一個廣泛使用的ES6轉碼器般贼,可以將ES6代碼轉為ES5代碼,從而在現(xiàn)有環(huán)境執(zhí)行靴庆。
????????
??使用方法:???????
??依賴:?Node.js????
?????npm install -g babel-cli (全局安裝一個命令行工具)

1.項目初始化???
????npm init
???????
??2.全局安裝babel????
????npm install --save-dev babel-cli babel-preset-env
??
??3.在項目目錄下創(chuàng)建一個文件????
????后綴名為 .babelrc???????
????內容為:

presets(預設)
    {
      "presets": ["env"]
    }
    ???

4.命令行操作,執(zhí)行轉碼????????
????babel 01.js -o 01babel.js
??????將 01.js 進行轉碼,新建一個 01babel.js 承接;
????babel-node 01.js?????
??????轉碼運行,但是不會生成新文件;

webpack腳手架工具

可以將 js css 等文件,打包生成一個文件;??
??使用方法:????
??依賴:?npm install -g webpack (webpack腳手架工具)
??
??1.項目初始化????
????npm init
?????
??2.打包,生成新文件;?????
????webpack 01.js 02.js
??????將01.js進行打包,生成02.js
?????? 01.js 中,引入的文件也會被打包進來;

使用方法2: (配置文件打包)???????
????webpack.config.js

最常用的ES6特性

let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments

聲明變量:

let

用途類似于 var 都是用來聲明變量的,但是又有很大的區(qū)別;
????1. let 為JavaScript新增了 塊級作用域 ,使用 let 聲明的變量,只在 let 命令所在的代碼塊內有效;
????
??例如:

        let name = 'zach'

        while (true) {
            let name = 'obama'
            console.log(name)  //obama
            break
        }

        console.log(name)  //zach

外面的 let 并不會影響里面的內容;

2. let 可以避免變量泄露為全局變量

例如:

        var a = [];
        for (var i = 0; i < 10; i++) {
          a[i] = function () {
            console.log(i);
          };
        }
        a[6](); // 10?

用 var 聲明的 i 作用域是全局,所以每一次循環(huán)新的i值都會覆蓋舊值,導致即使 a[6] 會出現(xiàn)最終的值 10;
?????
??而用 let 則不會出現(xiàn)這樣的問題:

        var a = [];
        for (let i = 0; i < 10; i++) {
          a[i] = function () {
            console.log(i);
          };
        }
        a[6](); // 6

3.let 不可以提前聲明(變量提升),也不可以重復聲明

const

同樣是聲明變量,但是聲明的是 常量.(常量的值不能改變)

原型:

ES6提供了更接近傳統(tǒng)語言的寫法褪贵,引入了Class(類)這個概念掂之。

新的class寫法讓對象原型的寫法更加清晰、更像面向對象編程的語法脆丁,也更加通俗易懂世舰。

例如:

        class Animal {
            constructor(){
                this.type = 'animal'
            }
            says(say){
                console.log(this.type + ' says ' + say)
            }
        }

        let animal = new Animal()
        animal.says('hello') //animal says hello

        class Cat extends Animal {
            constructor(){
                super()
                this.type = 'cat'
            }
        }

        let cat = new Cat()
        cat.says('hello') //cat says hello

上面代碼首先用class定義了一個“類”,可以看到里面有一個constructor方法槽卫,這就是構造方法跟压,而this關鍵字則代表實例對象。

簡單地說歼培,constructor內定義的方法和屬性是實例對象自己的裆馒,而constructor外定義的方法和屬性則是所有實力對象可以共享的。??
?
????Class之間可以通過extends關鍵字實現(xiàn)繼承丐怯,這比ES5的通過修改原型鏈實現(xiàn)繼承,要清晰和方便很多翔横。

上面定義了一個Cat類读跷,該類通過extends關鍵字,繼承了Animal類的所有屬性和方法禾唁。

super關鍵字效览,它指代父類的實例(即父類的this對象)

子類必須在constructor方法中調用super方法,否則新建實例時會報錯荡短。這是因為子類沒有自己的this對象丐枉,而是繼承父類的this對象,然后對其進行加工掘托。如果不調用super方法瘦锹,子類就得不到this對象。

ES6的繼承機制,實質是先創(chuàng)造父類的實例對象this(所以必須先調用super方法)弯院,然后再用子類的構造函數(shù)修改this辱士。

箭頭函數(shù)(arrow function)

例如:

        function(i){ return i + 1; } //

        (i) => i + 1 //ES6

特性:箭頭函數(shù)里面的this指向父級;

模板字符串 `` (反引號)

在模板字符串中,可以回車換行,拼接也很方便,把變量放在 ${} 里面就行;

解構

ES6允許按照一定模式,從數(shù)組和對象中提取值听绳,對變量進行賦值颂碘,這被稱為解構
????????
??例如:

        let cat = 'ken'
        let dog = 'lili'
        let zoo = {cat, dog}
        console.log(zoo)  //Object {cat: "ken", dog: "lili"}

聲明了2個變量,cat dog,再聲明 zoo = {cat,dog} 就可以把這兩個合并;
???????
??數(shù)組的解構:

        let [a,b,c] = [1,2,3];
        console.log(a); // 1
        console.log(b); // 2
        console.log(c); // 3

對象的解構:

        let dog = {type: 'animal', many: 2}
        let { type, many} = dog
        console.log(type, many)   //animal 2

參數(shù)默認值

在ES6中有函數(shù)參數(shù)默認值,當你沒有給函數(shù)傳遞參數(shù)的時候,就會使用默認值

例如:

        function animal(type = 'cat'){
            console.log(type)
        }
        animal()

type = 'cat' //此時, cat 就是函數(shù)的默認參數(shù)
????在調用函數(shù)時,如果不寫參數(shù),就會默認有一個參數(shù) cat,如果寫了,就會替換它;

總結

以上就是ES6最常用的一些語法,可以說這20%的語法椅挣,在ES6的日常使用中占了80%...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末头岔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鼠证,更是在濱河造成了極大的恐慌峡竣,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件名惩,死亡現(xiàn)場離奇詭異澎胡,居然都是意外死亡,警方通過查閱死者的電腦和手機娩鹉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門攻谁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弯予,你說我怎么就攤上這事戚宦。” “怎么了锈嫩?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵受楼,是天一觀的道長。 經常有香客問我呼寸,道長艳汽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任对雪,我火速辦了婚禮河狐,結果婚禮上,老公的妹妹穿的比我還像新娘瑟捣。我一直安慰自己馋艺,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布迈套。 她就那樣靜靜地躺著捐祠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桑李。 梳的紋絲不亂的頭發(fā)上踱蛀,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天窿给,我揣著相機與錄音,去河邊找鬼星岗。 笑死填大,一個胖子當著我的面吹牛,可吹牛的內容都是我干的俏橘。 我是一名探鬼主播允华,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寥掐!你這毒婦竟也來了靴寂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤召耘,失蹤者是張志新(化名)和其女友劉穎百炬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體污它,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡剖踊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了衫贬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片德澈。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖固惯,靈堂內的尸體忽然破棺而出梆造,到底是詐尸還是另有隱情,我是刑警寧澤葬毫,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布镇辉,位于F島的核電站,受9級特大地震影響贴捡,放射性物質發(fā)生泄漏忽肛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一烂斋、第九天 我趴在偏房一處隱蔽的房頂上張望麻裁。 院中可真熱鬧,春花似錦源祈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歇僧,卻和暖如春图张,著一層夾襖步出監(jiān)牢的瞬間锋拖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工祸轮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兽埃,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓适袜,卻偏偏與公主長得像柄错,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苦酱,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • 引用:http://hao.jser.com/archive/10813/?utm_source=tuicool&...
    莊志平閱讀 1,211評論 1 14
  • 阮一峰的博客 http://es6.ruanyifeng.com/ 一 ES6簡介 ECMAScript 6.0(...
    ai搞搞閱讀 1,733評論 0 0
  • ECMAScript6(以下簡稱ES6)是JavScript語言的下一代標準售貌。因為當前版本的ES6是在2015年發(fā)...
    imtns閱讀 483評論 0 0
  • ES6(ECMAScript2015)的出現(xiàn),無疑給前端開發(fā)人員帶來了新的驚喜疫萤,它包含了一些很棒的新特性颂跨,可以更加...
    gtt21閱讀 232評論 0 0
  • 前言 webpack2和vue2已經不是新鮮東西了,滿大街的文章在講解webpack和vue扯饶,但是很多內容寫的不是...
    技術宅小青年閱讀 6,536評論 4 43