在这篇文章中,Nick Craver提供了一个答案:
function(_, id)
Run Code Online (Sandbox Code Playgroud)
在使用它之前,此代码不会将下划线声明为变量.我在谷歌和此处的搜索仅指向使用下划线作为前缀的引用,而不是作为变量本身.它有什么作用?我喜欢Nick的解决方案,但这让我感到烦恼.
Iva*_*van 40
我已经看到下划线用来表示该变量是一个"不关心"变量.这意味着它无关紧要,根本不使用.
在你指出的情况下,它被用来表示他的函数有两个参数,但他只需要第二个参数.
作为初学者,我未能收集与此答案相关的许多方面,这些方面分散在评论和其他答案中.所以,我会尝试在下面合并它们:
首先,在上面提到的代码中,下划线参数使用如下: -
$(this).val('').attr('id', function(_, id) { return id + i });
Run Code Online (Sandbox Code Playgroud)
从jQuery文档中的attr功能在这里,存在一个重载形式的attr这是.attr( attributeName, function ).在function以这种形式被描述为
类型:Function(整数索引,字符串attr)
因此,它需要两个参数.但是,在我们的代码中,我们只需要id,这恰好是第二个参数.
现在,由于JS处理函数参数的方式,我们不能把它写成function(id),因为JS会映射id到index(预期的第一个参数function).因此,我们编写的函数需要有两个参数.
在这里,标准惯例发挥作用.如这里提到的,
下划线字符(_)用作指示未使用的函数参数的标准方法.
但是,这只是一个惯例,而不是一个规则.我们可以将未使用的参数命名为index或者unused也可以.那是,
$(this).val('').attr('id', function(unused, id) { return id + i });
Run Code Online (Sandbox Code Playgroud)
将是一个有效的等价物.
因此,使用_来替换未使用的参数可以用于具有类似重写形式的任何其他jQuery函数.例如,在这个答案中,我们可以在调用中看到下划线的用法$.text().只是为了确认,$.text()有接受函数有两个参数,如图重写的形式在这里.