valor una retornar pasar parametros parameter opcionales obligatorios funciones funcion desde javascript function-parameter

una - Saltar parámetros de funciones opcionales en JavaScript



pasar parametros a una funcion javascript desde html (3)

Respuesta corta

La apuesta más segura undefined está undefined , y debería funcionar de manera casi ubicua. Sin embargo, en última instancia, no puede engañar a la función que se está llamando para que piense que realmente omitió un parámetro.

Si se siente inclinado a usar null solo porque es más corto, considere declarar una variable llamada _ como una buena forma abreviada de undefined :

(function() { // First line of every script file "use strict"; var _ = undefined; // For shorthand // ... aFunction(a, _, c); // ... })(); // Last line of every script

Detalles

Primero, sepa que:

  • typeof undefined evalúa como "undefined"
  • typeof null evalúa como "object"

Entonces, supongamos que una función toma un argumento que espera ser de tipo "number" . Si proporciona null como valor, le está asignando un "object" . La semántica está apagada. 1

A medida que los desarrolladores continúan escribiendo código javascript cada vez más robusto, existe una posibilidad cada vez mayor de que las funciones a las que llamas verifiquen explícitamente el valor de un parámetro para undefined en lugar del clásico if (aParam) {...} . Estarás en un terreno inestable si continúas usando null indistintamente con undefined solo porque ambos suceden coercir a false .

Sin embargo, tenga en cuenta que, de hecho, es posible que una función diga si un parámetro se omitió realmente (en lugar de configurarlo como undefined ):

f(undefined); // Second param omitted function f(a, b) { // Both a and b will evaluate to undefined when used in an expression console.log(a); // undefined console.log(b); // undefined // But... console.log("0" in arguments); // true console.log("1" in arguments); // false }

Notas al pie

  1. Mientras que undefined tampoco es del tipo "number" , todo el trabajo es ser un tipo que no es realmente un tipo. Es por eso que es el valor asumido por las variables sin inicializar y el valor de retorno predeterminado para las funciones.

¿Podría indicarme la forma agradable de omitir parámetros opcionales en JavaScript?

Por ejemplo, quiero tirar todos los parámetros opt_ aquí:

goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {''Cache-Control'': ''no-cache''}, opt_timeoutInterval)


Simplemente pase null como valor de parámetro.

Agregado: también puede omitir todos los parámetros opcionales consecuentes después del último al que desea pasar un valor real (en este caso, puede omitir el parámetro opt_timeoutInterval )


Solución:

goog.net.XhrIo.send(url, undefined, undefined, undefined, {''Cache-Control'': ''no-cache''})

Debe usar undefined lugar del parámetro opcional que desea omitir, ya que este 100% simula el valor predeterminado para los parámetros opcionales en JavaScript.

Pequeño ejemplo:

myfunc(param); //is equivalent to myfunc(param, undefined, undefined, undefined);

Recomendación fuerte : use JSON si tiene muchos parámetros, y puede tener parámetros opcionales en medio de la lista de parámetros. Mira cómo se hace esto en jQuery .