代码之家  ›  专栏  ›  技术社区  ›  atkayla

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

  •  1
  • atkayla  · 技术社区  · 7 年前

    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

    2 回复  |  直到 7 年前
        1
  •  5
  •   Quentin    7 年前

    1和2是 相同的。

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

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

    在第二个示例中,函数返回 未定义 console.log 退货 未定义


    至于第三个例子

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

    在案例3中,您根本不创建函数。

    控制台.log 立即 )至 doSomething .

        2
  •  0
  •   m_callens    7 年前

    obj3.doSomething() doSomething 对象的属性 返回值 console.log(...) 自从 console.log 不返回任何内容,它只是执行并离开 空的

    obj1 obj2 控制台.log 具有 (x) => x * x return 是隐含的,不是必需的,但是围绕着中的功能体 {} 就像你在 然后仍然需要使用 关键字。