将方法分配给变量时使用箭头函数声明方法和 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()()