1. 程式人生 > >ES6從入門到進階 第四節 箭頭函式 三個點運算子 ...

ES6從入門到進階 第四節 箭頭函式 三個點運算子 ...

<!DOCTYPE html>
<html>
<head>
    <title>函式</title>
</head>
<body>
<script type="text/javascript">
    /*
    函式的預設引數
    擴充套件運算子 三個點...  可以展開陣列
     */
    function show(a, b = '我'){
        console.log(a,b);
    }
    show('wwoshi', '你');
    show("nishi");

    //函式的引數已經是定義的變數,不能重複被定義 和for迴圈不一樣
    function show1(a) {
        let a = 12;
        console.log(a);
    }
    //show1(); //Identifier 'a' has already been declared 
    
    let arr = ['apple', 'orange', 'pear'];
    console.log(arr);
    console.log(...arr);//apple orange pear 散開
    function show2(...a) {
        console.log(a);
    }
    show2([1,2,2,3,3]);

    function show3(a, b, c) {
        console.log(a, b, c);
    }
    show3(...[1,2,2]);

    function show4(a, b, ...c) {
        console.log(a, b, c);
    }
    show4(1, 2, 3, 4);

    let arr1 = [1,3];
    let arr2 = [...arr1];
    console.log(arr2);//不是引用陣列,是複製陣列

    /*
    箭頭函式
    ()=> {語句}
    (a,b)=> a+b; 這是return的值
    this指向 :定義函式所在的物件,不是執行時所在的物件
    箭頭函式沒有arguements
    箭頭函式不能當建構函式
     */
    let show5 = (a = 12, b = 5)=>{
        console.log(a, b);
    }
    show5();

    let json = {
        id: 1,
        show: function(){
            //console.log(this.id); 1
            // setTimeout(function(){
            //     console.log(this.id);//undefined
            // }, 200);
            setTimeout(()=>{console.log(this.id)}, 200); //1
        }
    }
    json.show();
</script>
</body>
</html>

 /*     箭頭函式     ()=> {語句}     (a,b)=> a+b; 這是return的值     this指向 :定義函式所在的物件,不是執行時所在的物件     箭頭函式沒有arguements     箭頭函式不能當建構函式      */