2009-12-04 20 views
29

¿Qué sucede cuando llamo a una función de Javascript que toma parámetros, sin proporcionar esos parámetros?¿Qué sucede cuando llamo a una función de Javascript que toma parámetros, sin proporcionar esos parámetros?

+1

Bueno, ¿qué pasó cuando llamaste a una función de Javascript que toma parámetros, sin proporcionar esos parámetros? Dígame por favor. –

+2

Bueno, no hubo errores ... es por eso que me preguntaba ... – Krummelz

+0

presumiblemente, partes del código ejecutadas hasta que golpeó un NPE, o no se produjo NPE, o se produjo un NPE inmediatamente. observar cualquiera de estos escenarios es muy diferente de obtener una comprensión rígida de cómo javascript maneja los argumentos (que es, como ocurre con muchos otros aspectos de js, no muy obvio, pero bastante bueno una vez que sabes cómo utilizarlo) –

Respuesta

27

Establecer como undefined. No obtienes una excepción. Puede ser un método conveniente para hacer que su función sea más versátil en ciertas situaciones. Indefinido se evalúa como falso, por lo que puede verificar si se transfirió o no un valor.

+0

¿Y qué pasa si su función puede tomar cinco parámetros, pero solo proporciona dos? ¿La misma cosa? – Krummelz

+0

se aceptan los dos primeros, los siguientes tres están definidos en –

+5

indefinido, además, puede proporcionar más parámetros * que la función acepta. a continuación, puede acceder a todos los parámetros mediante la colección 'arguments'. 'prueba de función (param1) {alerta (param1); if (arguments.length == 2) alerta (argumentos [1]); } prueba(); prueba (1); prueba (1,2); ' –

-7

Obtiene una excepción tan pronto como intenta utilizar uno de los parámetros.

12

javascript configurará los parámetros faltantes en el valor undefined.

function fn(a) { 
    console.log(a); 
} 

fn(1); // outputs 1 on the console 
fn(); // outputs undefined on the console 

Esto funciona para cualquier cantidad de parámetros.

function example(a,b,c) { 
    console.log(a); 
    console.log(b); 
    console.log(c); 
} 

example(1,2,3); //outputs 1 then 2 then 3 to the console 
example(1,2); //outputs 1 then 2 then undefined to the console 
example(1); //outputs 1 then undefined then undefined to the console 
example(); //outputs undefined then undefined then undefined to the console 

también en cuenta que la matriz arguments contendrá todos los argumentos suministrados, incluso si se suministra más que los requeridos por la definición de función.

6

Existe la inversa de la respuesta de todos en que puede llamar a una función que no parece tener parámetros en la firma con parámetros.

A continuación, puede acceder a ellos utilizando el arguments global integrado. Esta es una matriz que puede obtener los detalles de ella.

p. Ej.

function calcAverage() 
{ 
    var sum = 0 
    for(var i=0; i<arguments.length; i++) 
     sum = sum + arguments[i] 
    var average = sum/arguments.length 
    return average 
} 
document.write("Average = " + calcAverage(400, 600, 83)) 
3

Además de las observaciones anteriores, los argumentos matriz tiene longitud cero. Uno puede examinarlo en lugar de los parámetros nombrados en la firma de la función.

Cuestiones relacionadas