12、ES6 解構賦值的7個用途

解構賦值的用途:

      1、交換變量的值

      2、從函數返回多個值

      3、函數參數的定義

      4、提取json數據

      5、函數參數的默認值

      6、遍歷Map解構

      7、輸入模塊的指定方法


------------------------------------------------------1、交換變量的值-------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>交換變量的值</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       //ES5
       console.log("ES5");
       var a=100;
       var b=200;
       console.log("交換前:");
       console.log("a="+a);  //100
       console.log("b="+b);  //200

       var temp=a;
       a=b;
       b=temp;

       console.log("交換後:");
       console.log("a="+a);  //200
       console.log("b="+b);  //100

       //ES6
       console.log("ES6:");
       var x=100;
       var y=200;
       console.log("交換前:");
       console.log("x="+x);  //100
       console.log("y="+y);  //200

       [x,y]=[y,x];

       console.log("交換後:");
       console.log("x="+x);  //200
       console.log("y="+y);  //100

       //好處:1更直觀的代碼;2、方便,而且不用聲明多一箇中間變量temp去佔用內存,因爲後面我們並沒有釋放temp的內存,即提升了性能
    </script>
</head>
<body>
    
</body>
</html>

-----------------------------------------2、從函數返回多個值:返回一個數組---------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>從函數返回多個值:返回一個數組</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
        function fun(){
            return [1,2,3];  //函數內一般只能返回一個值,如果要返回多個值我們一般使用數組或者對象
        };
        console.log(fun()); //[1, 2, 3]
        //如果要取數組下標爲2的一個值就比較麻煩了
        
        //可採用如下方法
        var [x,y,z]=fun();
        console.log(x);  //1
        console.log(y);  //2
        console.log(z);  //3

        var [x]=fun();
        console.log(x); //1

        //用數組解構,用哪個取哪個非常的方便
        //使用的條件是:函數裏面返回的是一個數組,所以我們用數組來接收
    </script>
</head>
<body>
    
</body>
</html>


------------------------------------------2、從函數返回多個值:返回一個對象--------------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>從函數返回多個值:返回一個對象</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       function fun(){
           return {
               id:"007",
               name:"lyf",
               age:22
           };
       };

       var {id,name,age}=fun(); //也可定義爲其它的名字如var {id:personid,name:personname,age:personage}然後調用的時候用該名字調用即可
       console.log(id);  //007
       console.log(name);  //lyf
       console.log(age);   //22
    </script>
</head>
<body>
    
</body>
</html>

------------------------------------------3、函數參數的定義-----------------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函數參數的定義</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       //參數是一組有次序的值
       function fun([x,y,z]){
             //x=100,
             //y=200,
             //z=300
       };
       fun([100,200,300]);

       //參數是一組無次序的值
       function fun({id,name,age}){
           //id="13",
           //name="lyf",
           //age=22
       };
       fun({id:"13",age:22,name:"lyf"});
    </script>
</head>
<body>
    
</body>
</html>


------------------------------------4、提取json數據----------------------------------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>提取json數據</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       var jsonData={
           id:"13",
           name:"lyf",
           age:22,
           score:[98,148,107]
       };
       console.log(jsonData);

       console.log("ES5:");
       console.log("my name is:"+jsonData.name); //my name is:lyf
       console.log("my age is:"+jsonData.age); //my age is:22
       console.log("my chinese score is:"+jsonData.score[0]); //my chinese score is:98
        console.log("my math score is:"+jsonData.score[1]);  //my math score is:148
         console.log("my english score is:"+jsonData.score[2]); //my english score is:107

         console.log("ES6:");
         let {id:number,name,age,score}=jsonData;
         console.log(number);  //13
         console.log(name);    //lyf
         console.log(score[0]);  //98
    </script>
</head>
<body>
    
</body>
</html>

-------------------------------------------5、函數參數的默認值-----------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函數參數的默認值</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       jQuery.ajax({               //需引入jquery.js纔有效
         url: '/path/to/file',
         type: 'POST',
         dataType: 'xml/html/script/json/jsonp',
         data: {param1: 'value1'},
         complete: function(xhr, textStatus) {
           //called when complete
         },
         success: function(data, textStatus, xhr) {
           //called when successful
         },
         error: function(xhr, textStatus, errorThrown) {
           //called when there is an error
         }
       });
       
       jQuery.ajax=function (url,{
           async=true,
           beforeSend=function(){
               cache=true,
               complete=function(){
                   crossDomain=false,
                   global=true,
                   //...more config
               }
           }


       });
         
       //避免了在函數體內部再寫var foo=config.foo ||'default foo';這樣的語句
       
       
    </script>
</head>
<body>
    
</body>
</html>

---------------------------------------6、遍歷Map解構----------------------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>遍歷Map解構</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       var map=new Map();
       map.set("id","007");
       map.set("name","lyf");
       
       console.log(map);
       console.log(typeof map);

       //獲取鍵名和鍵值
       for(let [key,value] of map){
           console.log(key + " is " +value);
           //id is 007
           //name is lyf
       }
       
       //獲取鍵名
       for(let [key] of map){
           console.log(key);
           //id   
        //name
       }
       
       //獲取鍵值
       for(let [,value] of map){
           console.log(value);
           //007
           //lyf
       }
    </script>
</head>
<body>
    
</body>
</html>

------------------------------------------------------------7、輸入模塊的指定方法----------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>輸入模塊的指定方法</title>
    <script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
       const {SourceMapConsumer,SourceNode}=require("source-map"); //需引入require.js,纔會正常運行
    </script>
</head>
<body>
     
</body>
</html>







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章