1. // 标准函数语法
    2. /*function sum(a, b) {
    3. return a + b;
    4. }*/
    5. // 箭头函数语法:
    6. /*let sum = (a, b) => {
    7. return a + b;
    8. };
    9. var r = sum(1, 3);
    10. console.log(r);*/
    11. // 简化语法:
    12. // 1. 当形参只有一个时,形参入口的小括号可以不写
    13. let ok = how => {
    14. return 'I am fine'
    15. };
    16. // 2. 当函数只有一行代码时,可以省略花括号和 return 关键字
    17. let ok2 = how => 'I am fine';
    18. console.log(ok2());
    19. // 当你返回一个对象的时候要用小括号包裹
    20. let ok3 = how => ({name: '珠峰'});
    21. console.log(ok3());
    22. // 3. 箭头函数中没有 arguments,但是可以使用不定参数(剩余参数);
    23. let sum = (...arg) => {
    24. console.log(arg);
    25. console.log(Array.isArray(arg)); // true 剩余参数是一个真正的数组
    26. };
    27. // sum(1, 3, 4);
    28. // 不定参数:
    29. let sum2 = (a, b, ...arg) => {
    30. // 此时arg表示除了a, b 剩下的实参;从第三个及以后的实参会放到 arg 中
    31. console.log(arg);
    32. };
    33. sum2(1); // arg = [] arg 是一个数组,里面没有值时是个空数组
    34. sum2(1, 2); // arg = []
    35. sum2(1, 2, 3); // arg = [3]
    36. sum2(1, 2, 3, 4, 5); // arg = [3, 4, 5]
    37. // 4. 箭头函数中没有自己的 this,所以箭头函数里面的 this 是箭头函数声明时所在作用域中的 this(上级作用域中的 this);
    38. // arguments 和 this 是函数执行时,解析引擎传给函数的。箭头函数执行时,js 引擎没有给传。
    39. // 所以箭头函数不能用来做构造函数;
    40. // 箭头函数也没有自己的 prototype;