Newsgroup: it.comp.lang.javascript
Titolo: valore predefinito parametro in function

volevo sapere se anche in javascript (in php si puň fare) č possibile
immettere un valore predefinito ad un parametro di una function
esempio:
function prova (primo=10, secondo=20)
{
alert (primo);
alert (secondo);
}
se richiamo cosě:
prova();
dovrebbe rispondermi  i 2 alert 10 e 20
se richiamo cosě:
prova (100, 200);
dovrebbe rispondermi i 2 alert 100 e 200
ho fatto qualche prova ma mi restituisce errore
si puň fare in qualche modo? 
ciao a tutti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 function prova (primo=10, secondo=20)
no; cosě al volo mi viene in mente
function prova(primo,secondo) {
 if(!primo) primo=10;
 if(!secondo) secondo=20;
 
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

 immettere un valore predefinito ad un parametro di una function
Non in modo specifico per gli argomenti, così come c'è PHP o in altri
linguaggi. Devi farlo a mano.
Ci sono diversi modi, nella pratica ne tengo conto di due in particolar modo.
Il primo, più elegante, ed è quello che viene indicato anche nella client
guide di js:
function prova(primo, secondo){
	primo	= primo||10;
	secondo	= secondo||20;
	alert(primo);
	alert(secondo);
}
Lo statement:
	primo	= primo||10;
Lo puoi leggere letteralmente "dai a primo il valore di primo o di 10".
Lo "svantaggio" di questo metodo, è se devi passare anche valore che non sono
"verità logiche". Perché in quel caso, verrebbe assegnato il valore
alternativo (10, nel nostro caso).
Cosa non viene considerato verità logica? Una stringa vuota, null, undefined,
false, zero... Se provi a fare:
	prova(0,30);
Ti visualizzerà 10 e 30.
Quindi io consiglio tale approccio solo nei casi in cui i parametri non
possono assumere tali valori.
Negli altri casi, invece:
function prova(primo, secondo){
	primo 	= typeof primo=="undefined"?10:primo;
	secondo = typeof secondo=="undefined"?20:secondo;
}
Come vedi, entrambe le sintassi non sono legate al discorso funzioni e
argomenti, puoi utilizzarle in qualsiasi altro caso si tratti di impostare un
valore a variabile.
Il primo approccio è vantaggioso soprattutto per una lista possibile di
valori:
var myvar = primo||secondo||terzo||quarto||null;
myvar assumerà il primo valore che considera come verità logica tra quelli in
lista, se non ve ne è nessuno prenderà come valore "null".
-- 
"E' un vero peccato che tutte le persone che sanno come far funzionare 
il Paese siano troppo occupate a guidare taxi o a tagliare capelli."
(George Burns)


grazie ad entrambi ho risolto usando:
primo=primo==""?30:primo;
ciao e grazie
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 primo=primo==""?30:primo;
Una cosa del genere non dovrebbe funzionarti (oltre al fatto che non è molto
pulito controllare se una variabile che deve avere come valore un numero, sia
una stringa vuota):
	function prova(primo){
		primo=primo==""?30:primo;
		alert(primo);
	}
 
	prova();
Ti visualizza, giustamente, "undefined". Per funzionare dovresti utilizzare i
metodi precedentemente elencati, come:
	function prova(primo){
		primo=primo||30;
		alert(primo);
	}
 
	prova();
