javascript函数参数中的下划线是什么意思?

IT技术 javascript
2021-02-27 01:07:52

我正在浏览用 javascript 编写的图表库之一的代码,其中我看到将下划线(_)作为函数参数传递。这意味着什么?

例如

chart.x = function(_) {
    if (!arguments.length) return lines.x;
    lines.x(_);
    lines2.x(_);
    return chart;
  };

有人可以更新这个...谢谢。

2个回答

下划线符号_是 JavaScript 中的有效标识符,在您的示例中,它被用作函数参数。

单个下划线是一些 JavaScript 程序员用来向其他程序员表明他们应该“忽略此绑定/参数”的约定。由于 JavaScript 不进行参数计数检查,因此可以完全省略参数。

这个符号通常(再次按照惯例)与粗箭头函数结合使用,使它们更简洁易读,如下所示:

const fun = _ => console.log('Hello, World!')
fun()

在这种情况下,该函数不需要参数来运行,因此开发人员使用下划线作为约定来表示这一点。同样的事情可以这样写:

const fun = () => console.log('Hello, World!')
fun()

不同的是,第二个版本是一个没有参数的函数,但第一个版本有一个名为 _ 的参数被忽略了。这些是不同的,第二个版本更安全,如果稍微更冗长(1 个额外字符)。

另外,考虑一个案例

arr.forEach(function (_, i) {..})

where_表示不使用第一个参数。

在使用流行的 lodash 或下划线库时,像这样使用下划线会变得非常混乱。

@MarkJackson_仍将保持value。您可以通过声明一个带有_记录该参数的参数的函数来对此进行测试,您将看到它记录了传入的任何内容
2021-04-19 01:07:52
为了确认我的理解,_在这种情况下传递等同于传递null,并且_仅用于美观/可读性?
2021-04-27 01:07:52
如果完全省略它,那么他将没有任何东西可以传递给lines.x()lines2.x(_)
2021-05-02 01:07:52
@MarkJackson:不,_并不特别;它是 JS 中的有效标识符,就像xor一样foo这些定义是等价的: a) function f(x) { return x; }, b) function f(_) { return _; }我会说@sagar43 的答案是不正确的,因为实际上_ 在 的主体中使用的chart.x,因此省略参数 ( chart.x = function() { ... }) 会改变函数的语义。
2021-05-05 01:07:52
@sagar43 您能否详细说明“第二个版本更安全”的方式?
2021-05-11 01:07:52

_ 在胖箭头函数中被称为一次性变量这意味着实际上我们正在创建一个变量,但只是忽略了它。现在越来越多的开发人员在编写代码时使用它作为语法糖或速记,因为编写代码很容易并且少一个字符。

除了使用 _,您还可以使用其他变量,如 temp、x 等

举些例子:

() => console.log('Hello World')



_ => console.log('Hello World')




x => console.log('Hello World')

但我个人更喜欢在不需要参数的情况下使用 () 类型而不是一次性变量。

看下面的代码,你会更好地理解它。

_ 作为论据,

  f = _=> {
    return _ + 2 ;
}

f(3) 将返回 5

为了更好地理解,请查看 we bos