Como principiante, no pude reunir los muchos aspectos asociados con esta respuesta, que están dispersos en los comentarios y otras respuestas. Por lo tanto, voy a tratar de consolidarlos a continuación:
En primer lugar, en el trozo de código que se cita, se utiliza el argumento de subrayado de la siguiente manera: -
$(this).val('').attr('id', function(_, id) { return id + i });
De la documentación de jQuery para la función hereattr
, existe una forma sobrecargada de attr
que es .attr(attributeName, function)
. El function
en esta forma se describe como
Tipo: Función (índice entero, cadena attr)
Por lo tanto, se espera dos parámetros. Sin embargo, en nuestro código, solo necesitamos el id
, que es el segundo parámetro.
Ahora, debido a la forma JS maneja argumentos de la función, no podemos escribir como function(id)
, como JS sería asignar id
-index
(el primer argumento esperado para function
). Por lo tanto, la función que escribimos debe tener dos parámetros.
Aquí, una convención estándar entra en juego. Como se menciona here,
El carácter de subrayado (_) se utiliza como una forma estándar para indicar un argumento de función no utilizada.
Sin embargo, esto es solo una convención y no una regla. Podríamos nombrar también el argumento no utilizado como index
o unused
. Es decir,
$(this).val('').attr('id', function(unused, id) { return id + i });
sería un equivalente válido.
Por lo tanto, dicho uso de _ para sustituir un argumento no utilizado se puede utilizar para cualquier otra función jQuery que tenga una forma anulada similar. Por ejemplo, en la respuesta this, podemos ver el uso del guión bajo en la llamada al $.text()
. Solo para confirmar, $.text()
tiene una forma anulada que acepta una función con dos argumentos, como se muestra en here.
Gracias Ivan. ¿Pero sabes por qué se puede usar sin ser declarado? Agradecería cualquier referencia que pueda leer más sobre este –
En el ejemplo que proporcionó, '_' está siendo declarado como un argumento en la función. Él no está usándolo en absoluto. – Ivan
¡Ah! Lo tengo. Gracias –