textos - ¿Subrayar como una variable de JavaScript?
jquery subrayar texto (6)
En este post , Nick Craver proporcionó una respuesta en la que usó:
function(_, id)
Este código no declara el guión bajo como una variable antes de usarlo. Mi búsqueda en google y aquí solo apunta a referencias al uso del guión bajo como un prefijo, no como la variable en sí. ¿Qué hace? Me gusta la solución de Nick pero eso me molesta.
Aunque todas las respuestas explican que este es un estilo de código "hack" para indicar un parámetro no utilizado , generalmente es una mala práctica (idea). Anulará cualquier variable _
declarada en un ámbito principal. Esto evitará que uses bibliotecas que definan _
(como caracteres de subrayado, por ejemplo). Ni siquiera es una especie de optimización, ya que declara una variable de todos modos.
Debería utilizar mejor un nombre descriptivo del parámetro y considerar _
como una variable regular. Acortar nombres de variables también se consideran una mala práctica. Por lo tanto, si planea usar este "truco inteligente", no lo haga.
Como principiante, no pude recopilar los muchos aspectos asociados con esta respuesta, que se encuentran dispersos en los comentarios y otras respuestas. Entonces, intentaré consolidarlos a continuación:
En primer lugar, en el fragmento de código mencionado, el argumento de subrayado se utiliza de la siguiente manera:
$(this).val('''').attr(''id'', function(_, id) { return id + i });
De la documentación de jQuery para la función attr
here , existe una forma sobrecargada de attr
que es .attr( attributeName, function )
. La function
en esta forma se describe como
Tipo: Función (índice de enteros, cadena de caracteres)
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 en que JS maneja los argumentos de la función, no podemos escribirla como function(id)
, ya que JS asignaría la id
al index
(el primer argumento esperado para la 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 mencionó here ,
El carácter de subrayado (_) se utiliza como una forma estándar para indicar un argumento de función no utilizado.
Sin embargo, esto es solo una convención y no una regla. Podríamos nombrar el argumento no utilizado como index
o unused
también. Es decir,
$(this).val('''').attr(''id'', function(unused, id) { return id + i });
Sería un equivalente válido.
Por lo tanto, tal uso de _ para sustituir un argumento no utilizado puede usarse para cualquier otra función jQuery que tenga una forma anulada similar. Por ejemplo, en this respuesta, podemos ver el uso del subrayado en la llamada a $.text()
. Solo para confirmar, $.text()
tiene una forma anulada que acepta una función con dos argumentos, como se muestra here .
Como todos los demás carteles han dicho antes, puede verse como un marcador de posición, en los casos en que no se espera que se utilice. He visto algo similar en python, cuando una función puede devolver varios valores, pero solo los definidos están definidos explícitamente.
Por ejemplo
a, _, c = foo(bar)
En este caso, se ignora el valor de retorno potencial de ''b'' (al que todavía se puede acceder mediante _), y se va a utilizar ''a'' y ''c''.
El guión bajo es un nombre de variable JS válido . El parámetro llamado _
en el ejemplo anterior se puede usar como cualquier otra variable.
Sin embargo, generalmente se usa para indicar al lector (humano) posterior del código que lo que se pase no se utilizará. (Sin embargo, el autor del código puede ser malvado / ignorante y usarlo en la función).
He visto el guión bajo usado para denotar que la variable es una variable "no importa". Significa que no importa y no se usa en absoluto.
En el caso que usted señaló, se usó para indicar que su función tenía dos argumentos, pero que solo necesitaba el segundo.
Por estilo, _
se usa típicamente como una variable de marcador de posición. Una variable que no será realmente utilizada en el ámbito.