Para facilidad del usuario, tengo una función que primero recibe un argumento opcional, antes del argumento requerido. Por ejemplo:Primero argumento opcional en JavaScript
ns.myFunction('optional arg', function(){
//the required callback
});
que estoy haciendo esto en lugar de hacer lo siguiente ya que el cuerpo de devolución de llamada podría ser larga, y el usuario podría olvidar a reemplazar los valores predeterminados de los argumentos opcionales:
ns.myFunction(function(){
//the required callback
}, 'optional arg');
Actualmente estoy haciendo esto para verificar:
function myFunction(first, second) {
//if second is undefined and first is a function
if (typeof second === 'undefined' && typeof first === 'function') {
second = first;
}
}
Preguntas
- ¿Es esta la manera correcta?
- ¿Cómo lo haría para que se amplíe, especialmente si había N argumentos opcionales que están antes del argumento requerido?
¿Por qué no pondría los argumentos opcionales en el * end * de la lista de argumentos? Eso es más útil en JavaScript debido a la semántica de '.bind()'. Los argumentos más "estables" deberían ser los primeros, y los más propensos a variar o estar ausentes al final. – Pointy
@Pointy Tengo curiosidad sobre cómo las bibliotecas lo hacen así y si había un método adecuado. Por ejemplo, 'extender' de jQuery tiene una bandera de copia profunda que es opcional situada en la primera lista de argumentos. – Joseph
¿Qué le parece usar 'arguments [..]'? ¿No se iteraría a través de la matriz y se detendría en la primera ayuda 'typeof arguments [i] === function''? – SuperSaiyan