Pregunta muy estúpida. Por ejemplo, tengo datos variables y tengo la función DoSomething con dos parámetros par1 y par2. ambos son parámetros opcionales que serían nulos si no paso nada. Pero solo tengo una variable de datos que quiero vincular al segundo parámetro sin tocar el primer parámetro. En un idioma diferente, debería escribir algo como DoSomething(par2 = data) o DoSomething(par2: data) pero todos estos ejemplos generarán una excepción Uncaught SyntaxError: missing ) . Entonces, ¿qué hice mal?
Si tiene dos parámetros opcionales en JavaScript, simplemente pase undefined al primer argumento.
DoSomething(undefined, data); undefined es el valor predeterminado de los argumentos cuando no se pasan ( DoSomething() tendría ambos argumentos undefined ), excepto cuando establece valores predeterminados para argumentos opcionales.
Otra alternativa es pasar los argumentos como un objeto, lo que requiere cambiar la definición de la función y todas las llamadas a ella: ( ?? es el operador coalescente nulo
function DoSomething(args) { const par1 = args.par1 ?? "default value"; const par2 = args.par2 ?? "default value"; } // .... DoSomething({ par2: "custom value" }); DoSomething({ par1: "custom value", par2: "customValue" });El uso de TypeScript o JSDocs le permite brindar orientación sobre cómo enviar argumentos en el IDE
Siempre puede pasar indefinido o nulo como primer parámetro. Entonces será algo como esto:
DoSomething(undefined, data);Si tiene varios parámetros opcionales, si no quiere pasar indefinido... debe usar un objeto como parámetro.
// instead of DoSomething(param1, param2) function DoSomething(param = {}) { const { param1, param2 } = param; //..do something with param1 and param2 } DoSomething({ param2: 'somevalue' })Si considera usar mecanografiado, es aún mejor porque puede agregar el tipo al parámetro.