關於 ES6 的新增語法 :
1.讓原有 JS 撰寫更為精簡 ( 語法糖 )。
2.讓 JS 撰寫觀念更為直覺、簡便 (新方法)。
新的箭頭函式讓原有的函式寫法可以更精簡、方便,以下新舊方式來比對。
// 原來函式寫法
const callName = function (someone) {
    return '我是 ' +someone;
}
console.log(callName('小明'));
// 輸出結果 : 我是 小明
// 改成箭頭函式寫法
const callName = (someone) => {  // 把function省略掉,增加 =>
    return '我是 ' +someone;
}
console.log(callName('小明'));
// 輸出結果 : 我是 小明
1. 如果程式碼內容是表達式時,可以把大括號 {} 跟 reurn 拿掉,因為 => 後會自動 reurn。
const callName = (someone) => '我是 ' +someone;  //可以把大括號{} 跟 reurn拿掉
console.log(callName('小明'));
// 輸出結果 : 我是 小明
2. 如果只有一個參數時
// 一個參數時
const callName = someone => '我是 ' +someone;  //可以參數 () 拿掉,
console.log(callName('小明'));
// 輸出結果 : 我是 小明
// 兩個參數時就要保留()
const callName = (a, b) => '我是 ' +someone;  
console.log(callName('小明'));
// 沒有參數時
const callName = () => '我是小明';  // 要保留空 ()
可以參考文章 連結
// 傳統陣列寫法
const arr = [15, 12, 63, 67, 1421, 124, 567, 235];
const arrDouble = arr.map(function(num) {  
    return num * 2 ;
});
console.log(arrDouble);
// 輸出結果 : (8) [30, 24, 126, 134, 2842, 248, 1134, 470]
// map可以將陣列數值一一取出,再回傳到新陣列,適合陣列數值需要一一變動的方法。
// 箭頭函式寫法
const arr = [15, 12, 63, 67, 1421, 124, 567, 235, 12, 45];
const arrDouble = arr.map(num => num * 2); // 因為只有num一個參數,可以省略()用縮寫寫法
console.log(arrDouble);
// 輸出結果 : (8) [30, 24, 126, 134, 2842, 248, 1134, 470]
// 傳統陣列寫法
const average = function () {
    const nums = Array.from(arguments);
    const total = nums.reduce(function (acc, val) {
        return acc + val
    }, 0);
    console.log(total);
    
    return total / nums.length;
}
console.log(average(1, 2, 3, 4, 5));
// 箭頭函式寫法
const average = (...num) => num.reduce((acc, val) => acc + val, 0) / nums.length;
// 傳統陣列寫法 用AJAX方法取得遠端資料
const person = {
    data: {
    },
    getData: function() {
        const vm = this;  // 宣告另外的的變數,這邊 this 指向 person
        $.ajax({
            url: 'https://randomuser.me/api/',
            dataType: 'json',
            success: function (data) {
                console.log(data);
                vm.data = data.results[0];
                console.log('person.data', person.data);
            }
        });
    }
}
person.getData();
// 箭頭函式寫法
const person = {
    data: {
    },
    getData: function() {
        // const vm = this;  
        // 箭頭函式沒有自己的 this ,不用另外宣告,此時會使用外層的作用域
        $.ajax({
            url: 'https://randomuser.me/api/',
            dataType: 'json',
            success: (data) => {  // 省略 function
                console.log(data);
                this.data = data.results[0]; // 改回 this
                console.log('person.data', person.data);
            }
        });
    }
}
person.getData();