如果加了花括号,但是没有 return 语句,默认会返回 undefined
const foo1 = _ => 'haha'
const foo2 = _ => { 'haha' }
const foo3 = _ => { return 'haha' }
console.log(foo1());
console.log(foo2());
console.log(foo3());
调用两次匿名函数 a => b => a + b 就是调用了两次匿名函数
const foo1 = a => b => a + b
console.log(foo1(1)(2));
const foo2 = a => {
return b => {
return a + b
}
}
console.log(foo2(1)(2));
返回一个对象时,要加括号
const foo1 = x => {
return {
value: x
}
}
const foo2 = x => ({ value: x })
console.log(foo1(1));
console.log(foo2(1));
const foo3 = x => { value: x }
console.log(foo3(1));
this 指向
this 指向定义该匿名函数的上下文
var a = 123
const obj1 = {
a: 2,
foo: _ => {
return _ => {
console.log(this.a);
}
}
}
obj1.foo()()
匿名函数对 this 进行绑定 优先级高于 call 对 this 进行绑定的优先级
浏览器中的全局执行上下文 与 node 中的全局执行上下文不同!!! 被这个折腾了好久 !!!
var a = 123
const foo = function () {
return _ => {
console.log(this.a);
return this.a
}
}
const obj1 = { a: 2 }
const obj2 = { a: 3 }
var bar = foo.call(obj1)
bar.call(obj2)
但是,将 foo 的 function 换成 匿名函数
var a = 123
const foo = _ => {
return _ => {
console.log(this.a);
return this.a
}
}
const obj1 = { a: 2 }
const obj2 = { a: 3 }
var bar = foo.call(obj1)
bar.call(obj2)
|