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刚才回答了我的问题。我不知道返回值是一个函数。你能把这个贴出来作为答案吗?这样我就可以标记它了?