ES6踩坑記錄

這篇文章主要由於只是我的對ES6的不完整的理解,寫的不是很生動,若是有比較瞭解的歡迎糾錯。數組

1.箭頭函數
省略 function 省略return;
原來的promise

function (){
            retrun...
        }
        變成
        () = >

2.const 和 let閉包

const過程大概爲檢測 命名是否內存中存在? 報錯 :命名 ;
命名過程當中,若是函數出錯,命名依舊佔過去,不能再從新給函數定義這個命名。異步

var x;
 const x = () => {...}//報錯,命名已經存在
 const y = () => {console.log(1)//報錯,miss },定義函數失敗
 const y = () => {console.log(1)}//報錯,命名已存在

let做用於塊級做用域,從我膚淺的理解角度,就相似個閉包的參數。因此無法再同一做用域用let定義同一個參數。閉包參數有個特點,對外爲變量,爲內爲常量。函數

let x = 1;
   let x = 2;//報錯,x已經被聲明。
   function test(){let x = 3};//不報錯
   
   for(var i = 0;i < 5;i++){ 
        setTimeout(() => {console.log(i)},1000)
   }// 5 5 5 5 5
   
   for(let i = 0;i < 5;i++){ 
        setTimeout(() => {console.log(i)},1000)
   }// 0 1 2 3 4 
   
   這實際等於
    var n = (t) =>{setTimeout(() => {console.log(t)},1000)}
    for(var i = 0;i < 5;i++){
    n(i);
    }

3.promises
異步處理功能
定義一個函數爲new Promise(),Promises裏面有倆個參數對象,resolve //成功,reject //失敗,這倆個參數寫在函數的最後面,表示這個函數是否是執行成功了。
resolve和reject能夠帶入本身的參數。
.then()能夠無限鏈下去。我我的以爲這個能夠封裝一個方法。this

var con1 = new Promise(function(resolve,reject){
   setTimeout(() => {console.log(1);true?resolve('成功'):reject('失敗')},1000)
})

var con2 = (t) => {setTimeout(() => {console.log(t)},1000)};

con1.then((resolve的參數) => {con2(resolve的參數)},(reject的參數) => {con2(reject的參數)})

4.class
class應該是涉及到了原型鏈,原型鏈就是一個函數的原型函數,區別於構造函數。主要用於繼承。
我理解的繼承的意義就是提升代碼複用率。rest

class test1{
   testOne(){console.log('this is test1.testOne')}
   }
   
   class test2 extends test1{
   testTwo(){console.log('this is test2.testTwo')}
   }
   
   var test3 = new test2();
   test3.testOne();//this is test1.testOne
   test3.testTwo();//this is test1.testTwo

5.數組合並rest
rest的寫法就是...code

var testRest = (...x) => {console.log(x)};
     tesrRest(1,2,3)//[1,2,3]   
     const a = [1,2,3];
     const b = [4,5,6];
     const c = [...a,...b];//[1,2,3,4,5,6]

6.遍歷forEach對象

c.forEach(function(data){
        console.log(data)
        })//1 2 3 4 5 6

7.默認值繼承

var z = undefined;
        var x1 = z||'默認值z';//默認值z
        var y = 'y';
        var x2 = y||'默認值y';//y
        var q = false;
        var x3 = q||'默認值q';//默認值q
        var w = null;
        var x4 = w||'默認值w';//默認值w
        var e = '';
        var x5 = e||'默認值e';//默認值e

我以爲這裏面最沒怎麼踩懂的就是class 由於原型鏈仍是沒有能徹底弄懂 踩得最忐忑的就是 promise 由於這裏面的格式太侷限了,並且網上找的解釋不少不解釋reslove和reject的判斷條件

相關文章
相關標籤/搜索