将方法分配给变量时使用箭头函数声明方法和 function() 之间的区别?
Difference between using arrow functions to declare method and function() when assigning the method to a variable?
如果我有以下代码:
let myObject = {
greeting: "Hi",
greet1(message) {
return(console.log(`${this.greeting} ${message}`));
},
greet2() {
return(message => console.log(`${this.greeting} ${message}`));
}
}
greeting = "Hello";
anotherGreet1 = myObject.greet1;
anotherGreet1("It is sunny today");
anotherGreet2 = myObject.greet2(); // Why is there a parenthesis here?
anotherGreet2("It is raining today"); // Doesn't run unless previous line has ()
为什么当我用函数 greet1
赋值 anotherGreet1
时不需要使用括号,但是将 greet2
赋值给 anotherGreet2
我需要使用括号?我知道在将函数分配给变量时,我想分配 整个 函数,而不仅仅是它的 return 值。此逻辑对 greet1
有意义,但对 greet2
.
不成立
您的 greet1
是首先处理 console.log(...)
的函数,然后才 returns 它的值为字符串:myObject.greet1()
你的 greet2
if 函数 returns 另一个函数。您必须再次调用该函数才能获得 console.log(...)
的输出:myObject.greet2()()
如果我有以下代码:
let myObject = {
greeting: "Hi",
greet1(message) {
return(console.log(`${this.greeting} ${message}`));
},
greet2() {
return(message => console.log(`${this.greeting} ${message}`));
}
}
greeting = "Hello";
anotherGreet1 = myObject.greet1;
anotherGreet1("It is sunny today");
anotherGreet2 = myObject.greet2(); // Why is there a parenthesis here?
anotherGreet2("It is raining today"); // Doesn't run unless previous line has ()
为什么当我用函数 greet1
赋值 anotherGreet1
时不需要使用括号,但是将 greet2
赋值给 anotherGreet2
我需要使用括号?我知道在将函数分配给变量时,我想分配 整个 函数,而不仅仅是它的 return 值。此逻辑对 greet1
有意义,但对 greet2
.
您的 greet1
是首先处理 console.log(...)
的函数,然后才 returns 它的值为字符串:myObject.greet1()
你的 greet2
if 函数 returns 另一个函数。您必须再次调用该函数才能获得 console.log(...)
的输出:myObject.greet2()()