javascript - 这个箭头函数可以缩短吗?这些是一样的吗?

标签 javascript syntax ecmascript-6 member-functions

如果我从这个开始:

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()

https://repl.it/JEGD/1

最佳答案

1 和 2 几乎相同。

当您在箭头的 RHS 上提供语句(而不是 block )时,该函数返回对该语句求值的结果。

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

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

这里没有实际差异,但在类似情况下可能存在差异。


至于第三个例子……

在情况 1 中,您使用函数表达式创建了一个函数。

在情况 2 中,您创建了一个带有箭头函数的函数。

在情况 3 中,您根本没有创建函数。

立即调用console.log并将其返回值(正如我上面提到的,未定义)分配给做点什么 .

关于javascript - 这个箭头函数可以缩短吗?这些是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784333/

相关文章:

javascript - 为什么js不允许方法作为对象键/值?

javascript - 矩形类未明显显示在 Canvas 上

javascript - JSON.parse — "unexpected token"构造的 JSON 字符串

javascript - 在 ReactJS 中设置状态的条件(三元)运算符

javascript - ES7 使用await 生成器从一系列promise 中获取结果

javascript - 单元测试包含带有插槽的 Vuetify 数据表的 Vue 组件

javascript - 在 JavaScript 中循环遍历数组

Javascript椭圆点乘算法

javascript - JavaScript 多行注释中的 '@' 符号有什么作用?

Javascript/jQuery .each 和语法问题