Newsgroup: it.comp.lang.javascript
Titolo: parametro non obbligatorio in function???

Ciao a tutti,
sapete dirmi come si dichiara una funzione che abbia un parametro non
obbligatorio e che quindi si possa omettere senza che causi alcun errore?
tipo:
function myfun(var1=6)
{
    ....
}


function myfun(var1)
{
   if (!var1)
     var1 = 6;
   ...
}
Gaetano Bigliardi

      var1 = 6;
Caro Gaetano così non và bene, infatti se disgrazia vuole che var1 fosse =0
Comunque mi hai preceduto per un pelo, ho trovato la soluzione e la posto
tra un min.

Questa dovrebbe essere la soluzione:
function a(obj)
{
if(typeof obj=='undefined')
     alert("Non è definita");
else
    alert("E' definita");
}

 }
Hai posto una domanda, ma vuoi sapere tutt'altro, temo :)
Il tuo problema non e' relativo ai parametri, quanto alle variabili "non 
definite", indipendentemente dal fatto che siano parametri o meno.
I parametri sono SEMPRE opzionali, in Javascript. Infatti cio' che ti 
manda in errore il codice non e' il fatto di non averli specificati 
durante la chiamata alla funzione, quanto di averli USATI al suo interno 
senza che siano stati avvalorati.
Ergo, ti basta fare un classico:
if ( typeof var1!="undefined") {
	/* fai quel che vuoi */
}else{
	/* fai altro */
}
Puoi anche usare l'operatore ternario per assegnare un valore di default 
a var1, oppure l'operatore OR.
Quest'ultimo caso e' molto interessante per definire valori di default, 
ma risente del problema relativo allo 0, null, e stringa vuota.
In ultimo, ti ricordo che le funzioni hanno un array chiamato 
"arguments", e volendo puoi riferirti a quello per recuperare i 
parametri, soprattutto se non sai quanti possono essere a prescindere.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)


eps... beccato:-)
Variazione sul tema, senza usare typeof:
function myfun(var1)
{
    if (!var1 && var1 != 0)
      var1 = 6;
Gaetano

       var1 = 6;
Ma forse è il caso che lasci perdere infatti questo non funziona se mettessi
una stringa vuota var1=""
Comunque grazie lo stesso

GRAZIE!

 una stringa vuota var1=""
Se di default vuoi mettere var1 a 6 significa che ti aspetti che var1 
sia un numero o sia indefinito o nullo, non una stringa.
Per tagliare la testa al toro:
function myfun(var1)
{
    // mi aspetto che var1 sia un numero, altrimenti lo imposto a 6
   if (typeof var1 != "number")
     var1 = 6;
Naturalmente gli esempi che sono stati fatti all'interno degli altri 
messaggi vanno già bene.
Un'ultima chicca. Facendo:
function myfun(var1)
{
   if (var1 == undefined)
     var1 = 6;
questo funziona in tutti i browser tranne in una imprecisata versione di 
  Internet Explorer utilizzato come componente COM all'interno di 
un'altra applicazione. Usando tale versione del browser si manifestava 
l'errore:
"undefined" non è definito
Gaetano

 "undefined" non è definito
Stessa cosa anche per NN4.7-
Ciao

 un'altra applicazione.
Non ho ben capito cosa vuoi dire, ma il codice che hai scritto te puo' 
funzionare su Internet Explorer SOLO se ha lo Script Engine versione 5.5 
o superiori. Ergo, senza SP e amenita' varie, solo dalla versione 5.5 in 
poi di IE.
Senza considerare i vari Netscape 4.x (non tiro in ballo i vecchi Opera 
che gia' di suo hanno problemi con Javascript che NS4.x mastica 
benissimo).


 poi di IE.
Una nostra applicazione web doveva funzionare usando Internet Explorer 
"embedded", ovvero c'era una applicazione Windows che al suo in terno 
aveva un frame. Dentro questo frame veniva inserito IE utilizzando la 
tecnologia COM. Evidentemente questo componente utilizzava IE 5.
Gaetano