Javascript 将方法赋给变量时,使用箭头函数声明方法和使用函数()之间的区别?

Javascript 将方法赋给变量时,使用箭头函数声明方法和使用函数()之间的区别?,javascript,function,arrow-functions,Javascript,Function,Arrow Functions,如果我有以下代码: let myObject = { greeting: "Hi", greet1(message) { return(console.log(`${this.greeting} ${message}`)); }, greet2() { return(message => console.log(`${this.greeting} ${message}`)); } } greeting =

如果我有以下代码:

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
分配
另一个greet1
时,我不需要使用括号,但要分配
greet2
另一个greet2
我需要使用括号?我明白,在将函数赋值给变量时,我要赋值给整个函数,而不仅仅是它的返回值。这个逻辑对于
greet1
是有意义的,但是对于
greet2
你的
greet1
是一个函数,它首先处理
console.log(…)
,然后才以字符串形式返回它的值:
myObject.greet1()


您的
greet2
if函数返回另一个函数。您必须再次调用该函数才能获得控制台.log(…):
myObject.greet2()

,因为
greet1
的返回值是字符串,而
greet2
是函数,所以在
greet2
中,移动后必须调用返回的箭头函数:
myObject.greet2()
@Justinas刚才回答了我的问题。我不知道返回值是一个函数。你能把这个贴出来作为答案吗?这样我就可以标记它了?