Scusate eh, ci arrivo da segnalazione su un altro thread.
A parte il fatto che si può rendere il codice ultimo più lineare se proprio si vogliono usare queste sintassi 1.8:
codice:
var anno, mioArr = [12];
Object.defineProperty(mioArr, 1, {
get : function() { return anno; }
});/*3 righe di codice anzichè 7*/
anno = "prima";
alert(mioArr[1]);
anno = "dopo";
alert(mioArr[1]);
almeno evitiamo di mettere funzioni a quel punto non necessarie nel namespace globale (se dobbiamo usare queste sintassi, allora sfruttiamole appieno).
Ma quello che non capisco è: per quale motivo inserire una funzione come 'prova' e poi due statements che assegnano ad 'anno' va bene, e invece fare così non andrebbe bene:
codice:
function anno(v){return mioArr[1]=v;}
var mioArr=[12];/*2 righe di codice*/
anno('prima');
alert(mioArr[1]);
anno('dopo');
alert(mioArr[1]);
crea solo una funzione e una array nel global. E anzichè scrivere
anno='prima'
al posto dell' = ci metti due parentesi:
anno('prima')
Cioè, per capire se c'è un motivo critico per cui dobbiamo ottenere la stessa cosa per forza assegnando un valore ad una variabile globale, o passandolo come parametro ad una funzione globale.
Se un programmatore ha il controllo del suo ambiente, perchè dove dispone che anno='prima' non può invece disporre che anno('prima')? In cosa consiste il vantaggio che trae da
anno='prima'
rispetto ad
anno('prima')?
Mi riferisco proprio a questa circostanza - non ho dubbi poi che in qualche file particolarissimo creato chissà dove possa esser sorta la esigenza: mi chiedo perchè sia sorta in questo caso, cioè se stiamo lasciando che sia il codice a dettare a noi i nostri comportamenti, anzichè noi al codice.
grazie ciau