// // 原来的函数使用
// let fn = function(a, b) {
// console.log(a + b);
// }
// fn(4, 6);
// 箭头函数 无function关键字 在函数参数与函数体之间用箭头连接
let fn = (a, b) => {
console.log(a + b);
}
fn(1, 2);
// 当函数只有一个形参 小括号可以省略
let fn = a => {
console.log(a);
}
fn(1);
/*
let fn3 = (m,n)=>{
return m+n;
};*/
// 上面的只有一条return语句 可以简写为下面的省略大括号
let fn3 = (m, n) => m + n;
console.log(fn3(4, 7));
// 可以给形参设置默认值
let fn3 = (m = 1, n = 5) => m + n;
console.log(fn3(4));
let fun = x => y => x + y;
let res = fun(5)(6);
console.log(res);
/*
function fun(x) {
return function(y) {
return x+y;
}
}
*/
// 1 箭头函数内部没有arguments
/*
function fn() {
console.log(arguments);
}
*/
// ... 剩余运算符
let fn4 = (a, ...arguments) => {
console.log(arguments); // 数组
}
fn4(1, 2, 3, 4);
let obj = {
fn: (function() {
return function() {
console.log(this === obj);
}
})()
};
obj.fn(); // 对象打点调用,那么函数中的this就是这个对象
let obj = {
fn: (function() {
return function() {
console.log(this);
}
})()
};
obj.fn.call(window); // 普通函数可以通过call去改变this
//箭头函数的this和执行环境有关,继承上下文 无法通过call/apply/bind改变箭头
// 函数的this
let obj = {
fn: (function() {
return () => {
console.log(this);
}
})()
};
obj.fn.call(obj);