2009-12-04 22 views
29

Cosa succede quando chiamo una funzione Javascript che accetta parametri, senza fornire quei parametri?Cosa succede quando chiamo una funzione Javascript che accetta parametri, senza fornire quei parametri?

+1

Bene, cosa è successo quando hai chiamato una funzione Javascript che accetta parametri senza fornire quei parametri? Per favore, dillo –

+2

Beh, non c'erano errori .. questo è il motivo per cui mi stavo chiedendo .. – Krummelz

+0

presumibilmente, parti del codice eseguite fino a quando non ha colpito un NPE, o nessun NPE si è verificato, o un NPE si è verificato immediatamente. osservare uno di questi scenari è molto diverso dall'ottenere una rigida comprensione di come javascript gestisce gli argomenti (che è, come con molti altri aspetti di js, non molto ovvio, ma abbastanza nitido una volta che si sa come utilizzarlo) –

risposta

27

Impostato su undefined. Non hai un'eccezione. Può essere un metodo conveniente per rendere la tua funzione più versatile in determinate situazioni. Non definito viene valutato come falso, quindi è possibile verificare se è stato inoltrato o meno un valore.

+0

E se la tua funzione può richiedere cinque parametri, ma ne fornisci solo due? Stessa cosa? – Krummelz

+0

sono accettate le prime due, le seguenti tre sono impostate su indefinito –

+5

inoltre, è possibile fornire * più * parametri che la funzione accetta. puoi quindi accedere a tutti i parametri tramite la raccolta 'arguments'. 'function test (param1) {alert (param1); if (arguments.length == 2) alert (argomenti [1]); } test(); test (1); prova (1,2); ' –

-7

Si ottiene un'eccezione non appena si tenta di utilizzare uno dei parametri.

12

javascript imposterà i parametri mancanti sul valore undefined.

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

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

Questo funziona per qualsiasi numero di parametri.

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 

Si noti inoltre che l'array arguments conterrà tutti gli argomenti forniti, anche se si fornisce più di che sono richieste, la definizione della funzione.

6

C'è una risposta inversa a tutti in quanto è possibile chiamare una funzione che non sembra avere parametri nella firma con i parametri.

È quindi possibile accedervi utilizzando lo strumento integrato arguments globale. Questo è un array che puoi ottenere dai dettagli.

ad es.

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

Oltre alle osservazioni di cui sopra, gli argomenti matrice ha lunghezza zero. Si può esaminare piuttosto che i parametri nominati nella firma della funzione.

Problemi correlati