如果我从这个开始:
const obj1 = {
doSomething: () => {
console.log('hello world 1');
},
};
可以安全地缩短它吗?这些是一样的吗?
const obj2 = {
doSomething: () => console.log('hello world 2'),
};
为什么这个这么奇怪?
const obj3 = {
doSomething: console.log('hello world 3'),
};
我注意到 obj3
会自行运行并且无法执行 obj3.doSomething()
。
最佳答案
1 和 2 几乎相同。
当您在箭头的 RHS 上提供语句(而不是 block )时,该函数返回对该语句求值的结果。
在第一个例子中,函数返回undefined
,因为没有return
语句。
在第二个示例中,函数返回 undefined
,因为 console.log
返回 undefined
。
这里没有实际差异,但在类似情况下可能存在差异。
至于第三个例子……
在情况 1 中,您使用函数表达式创建了一个函数。
在情况 2 中,您创建了一个带有箭头函数的函数。
在情况 3 中,您根本没有创建函数。
您立即调用console.log
并将其返回值(正如我上面提到的,未定义
)分配给做点什么
.
关于javascript - 这个箭头函数可以缩短吗?这些是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784333/