【问题标题】:Function without argument : () or _ [duplicate]没有参数的函数:() 或 _ [重复]
【发布时间】:2021-06-15 17:54:50
【问题描述】:

我有问题要问你。

当你创建一个没有参数的函数时,你曾经这样做

const function myFunction = () => {
...
}

但最近我发现我们可以用 _ 做同样的事情

const function myFunction = _ => {
...
}

所以,我的问题是,有什么区别?

仅仅因为每个人都使用()而使用_是错误的吗?

【问题讨论】:

  • 定义的函数不一样。第一个 myFunction 没有参数 (myFunction.length === 0),第二个有一个参数 (myFunction.length === 1)
  • @Andreas 是正确的。然而,这几乎无关紧要。第二种模式有时被称为“丢弃”或“丢弃参数”,您获取一个参数但从不打算使用它。 _ 在某种程度上是表示这一点的约定,例如(_, foo) => { /* ... */ } 是一个接受两个参数但丢弃第一个参数并且不使用它的函数。

标签: javascript function arguments


【解决方案1】:

() 是一个零参数列表。

(_) 是一个参数列表(名为_

_(_) 的简写,因为当只有一个参数时,括号是可选的。


“错误”是主观的,但是:

  • 如果一个函数不使用任何参数,那么提供一个变量来分配它们是没有意义的(即使它的名称没有告诉你它的用途)。
  • 编写非惯用代码会给以后必须来维护您的代码的人设置障碍。

旁白:您有语法错误。不能将 function 关键字与箭头函数结合使用。

【讨论】:

  • 编写非惯用代码会给以后需要维护代码的人设置障碍。”但_ 被广泛用于表示“我声明这个参数,但不打算使用它”。在 C# 中,这是一个实际的语言特性,因此您可以丢弃多个 (_, _, third) => third + 1,而这是 JS 中的语法错误。尽管如此,Array.from({length: 10}, (_, i) => i + 1) 仍然是 JS 中使用的丢弃的常见示例。
  • @VLAZ — 通常只有在编写函数以符合回调规范并且需要后面的参数时,这里不是这种情况。
【解决方案2】:

当您创建一个函数时,可以只指定一个不带括号的参数。

const myFunction = _ => _ * 2

当你调用函数时返回 4

myFunction(2)

【讨论】:

    猜你喜欢
    • 2020-04-17
    • 2015-01-06
    • 1970-01-01
    • 2020-12-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多