Newsgroup: it.comp.lang.javascript
Titolo: azzerare array

var array_01=new Array();
si usa tale codice?
array_01.length=0;

 array_01.length=0;
boh, a me non piace molto,
io rifarei array_01=new Array();
vediamo cosa ne pensano gli altri...

 io rifarei array_01=new Array();
Così non lo azzeri, ne crei uno nuovo. Non sempre è possibile, o
auspicabile.
-- 
~ "Ciò che il cuore conosce oggi, la testa comprenderà domani"
(Seneca)

 Non sempre č possibile, o auspicabile.
ah, cioe'?

 ah, cioe'?
Ad esempio, non č auspicabile in casi in cui l'istanza č fondamentale:
	function dosomething(arr){
		/* 
			fai qualcosa con arr, e se vi sono 
			determinate condizioni,	azzera 
			l'array passato.
		*/
		arr.length = 0;	
	}
	var a = [1,2,3];
	dosomething(a);
	alert(a);
Ovviamente se fai come avevi suggerito te:
	function dosomething(arr){
		/* 
			fai qualcosa con arr, e se vi sono 
			determinate condizioni,	azzera 
			l'array passato.
		*/
		arr = new Array();
	}
Salta tutto.
E non č possibile, in casi tipo questo:
	document.getElementById("my-select").options.length = 0;
Se provi a fare:
	document.getElementById("my-select").options = new Array();
Giustamente il browser ti sputa in un occhio.
-- 
~ "Le parole uccidono piů delle pallottole.
Ma le pallottole arrivano prima."
(Raffaele Cutolo)

 Giustamente il browser ti sputa in un occhio.
boh, forse qui posso intuire qualcosa, pero' non mi metterre alla prova :)

 boh, forse qui posso intuire qualcosa, pero' non mi metterre alla prova :)
Beh, è abbastanza evidente: in quel caso non ti è consentito assegnare
un'istanza differente (premesso che options non è un Array; il browser
ti da comunque errore molto prima di un "type mismatch").
-- 
~ "Le leggi sono come le ragnatele:
abbastanza forti per catturare i deboli,
troppo deboli per trattenere i forti."
(Anacarsi lo Scita)

> avrebbe dovuto prendersi la nuova istanza dell'array anche globalmente? 
No ora è chiaro, io forse, nella parte di testa che mi era rimasta sana,
pensavo che passassi il riferimento del riferimento (quello che in C è il
doppio puntatore o meglio il puntatore del puntatore, boh, non so' come si
dice)

 dice)
Mi sa che ti stai ulteriormente confondendo le idee. Tra l'altro JS
non ha neppure il concetto di puntatore, figuriamoci di puntatore a
puntatore. Non capisco questa mania di tentare di spiegare le cose,
complicandole; o tirando in ballo altri linguaggi.
Il rasoio di Occam non vi dice proprio nulla?
E inoltre, se in C avessi fatto una cosa analoga con i puntatori ci
sarebbe stato un bel memory leak.
(mi riferisco all'assegnare una diversa locazione di memoria, ad un
puntatore che punta altrove)
-- 
~ "Quando ero bambino, ragazzo, credevo in Dio.
Adesso so."
(Carl Gustav Jung)

 puntatore che punta altrove)
Sì avevo capito
cmq dipende se l'altrove fosse stato NULL o una locazione "condivisa" non
ci sarebbero stati problemi
E ti dico di più, ora che mi ci fai pensare, quando ho letto il tuo primo
post, pensavo proprio che mi richiamassi proprio su questo fatto, cioe'
pensavo che mi avresti detto che la prassi è sbagliata perchè generava
spazzatura non smaltibile nella memoria...
P.S.
Ora, ho paura della tua risposta :)

 spazzatura non smaltibile nella memoria...
Oh no, il problema era molto piů basilare, come hai visto. :)
-- 
~ L'ingegnere non vive, funziona.

>Ora, ho paura della tua risposta :)
beh, è andata benino  :P  ^_^"