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