ottobre 2011 Blog Posts
undefined è una variabile globale inizializzata al valore undefined; il problema è che tale variabile è accessibile in read/write.
E' quindi sufficiente sbagliare un confronto con un assegnamento (ed in Università vedo che è uno degli errori più frequenti degli studenti) per ridefinire undefined e influenzare tutto il resto del codice:
var x = 1;
if (undefined = x) ; //do something
x == undefined --> true
1 == undefined --> true
Questo comportamento molto pericoloso è stato finalmente risolto da ECMAScript 5.
Di questa caratteristica avevo già parlato in un post di qualche anno fa, ma proprio non la digerisco: getMonth è base 0, mentre getDate è base 1.
I miei amici sanno che "rompo" un pò sulla storia della base 0, di cui capisco benissimo l'origine legata agli indirizzi di memoria (visto che sono Ing. Elettronico qualcosa mi dice); però ritengo che un linguaggio di alto livello debba mascherare questo aspetto. Mi sta bene che un ciclo, concetto prettamente informatico, vada su base 0; ma che una funzione di una classe DateTime mi restituisca 1 per dire che siamo a Febbraio fatico...
Questa caratteristica è banale e abbastanza innocua, ma secondo me tradisce l'origine del linguaggio: in Javascript (come in certe versioni del C mi sembra) si può omettere il ; di fine istruzione tra due istruzioni che stanno su due righe diverse oppure nelle istruzioni a fine programma o comunque seguite da una }
I problemi sono due: certe istruzioni vengono interpretate in modo "poco intuitivo" e inotre si crea una dipendenza tra le diverse istruzioni, nel senso che se aggiungo un'istruzione sotto a quella senza ; devo ricordarmi di correggere anche quella sopra. Ecco un esempio di interpretazione che potrebbe confondere:
var...
Premessa: ritengo che Javascript sia uno dei linguaggi che si DEVONO conoscere al giorno d'oggi se si vuole fare web (e magari anche mobile); il problema è che pur usandolo io mi ci sono sempre trovato a disagio. Parte di ciò è sicuramente dovuto al fatto che non ho mai approfondito per bene il linguaggio, per cui questi giorni ho iniziato la lettura di "Javascript: the Definitive Guide", che mi sembra ben scritto e approfondito. Un'altra parte del disagio è dovuto a caratteristiche del linguaggio che poco si sposano con la mia filosofia (ben poco geek lo so, ma penso...