这个箭头功能可以缩短吗?这些都一样吗?

atk*_*yla 1 javascript syntax member-functions ecmascript-6

如果我从这开始:

const obj1 = {
    doSomething: () => {
        console.log('hello world 1');
    },
};
Run Code Online (Sandbox Code Playgroud)

可以安全缩短吗?这些都一样吗?

const obj2 = {
    doSomething: () => console.log('hello world 2'),
};
Run Code Online (Sandbox Code Playgroud)

为什么这个这么奇怪?

const obj3 = {
    doSomething: console.log('hello world 3'),
};
Run Code Online (Sandbox Code Playgroud)

我注意到obj3跑步本身并不能做obj3.doSomething().

https://repl.it/JEGD/1

Que*_*tin 5

1和2 几乎相同.

当您在箭头的RHS上提供语句(而不是块)时,该函数返回评估该语句的结果.

在第一个示例中,函数返回,undefined因为没有return语句.

在第二个示例中,函数返回undefined因为console.log返回undefined.

这里没有实际的区别,但可能存在类似情况.


至于第三个例子......

在案例1中,您使用函数表达式创建函数.

在第2种情况下,您可以使用箭头功能创建一个函数.

在案例3中,您根本不创建功能.

console.log 立即打电话并分配它的返回值(正如我上面提到的那样undefined)doSomething .