Guida Cos'è JavaScript #1

Stato
Discussione chiusa ad ulteriori risposte.

</Singh>™

Utente Palladium
8 Marzo 2013
5,571
146
1,706
1,448
Ultima modifica da un moderatore:
JavaScript
Introduzione

Innanzitutto Javascript è un linguaggio di scripting orientato agli oggetti e agli eventi,il quale non ha nulla a che vedere con il linguaggio di programmazione Java;i due linguaggi non hanno nulla in comune, la similarità del loro nome è dovuta solo a scopi di marketing.

La necessità di creare un linguaggio del genere deriva dal fatto di far girare applicazioni non solo sul lato server, ma anche sul lato client(ciò non esclude che JS non possa essere utilizzato server-side), facendo risultare le nostre pagine web più dinamiche, facilitando di molto il traffico tra server e client( ne sono un esempio i form che vedremo più avanti).
Javascript è interpretato(l'interprete è incluso nel browser che si sta utilizzando), con il quale è possibile fare veramente svariate cose: controllo input in una textbox/textarea; impostazioni cookie; da un evento generato dall'utente agire su un tag html cambiandone attributi e tanto altro ancora...
Inoltre introducendo anche la libreria jQuery che, oltre a semplificare il lavoro del programmatore per quanto riguarda la gestione degli elementi di una pagina web(detti anche DOM), ci permette di implementare funzionalità AJAX che per ora vi e mi risparmio.

Sintassi
Passiamo alla parte più divertente: alla stesura del codice!

Nel nostro documento .html dobbiamo includere il tag script, nel quale inseriremo tutto il codice javascript( se è interno)
Se invece abbiamo un file esterno che contiene codice javascript con estensione .js dobbiamo mettere l'attributo "src" nel tag script
HTML:
<html>
<head>
<! O poniamo il nostro tag qui, nel head...>
<script type="text/javascript">
//inserisco il codice
</script>
</head>
<body>
<!o lo pongo dentro al body( io preferisco qua dato che è più comodo)>
<script type="text/javascript">//codice</script>
<script src="/miocodice.js" type="text/javascript"></script>//js esterno
</body>
</html>

Come ogni linguaggio di scripting il programmatore ha una certa flessibilità sulla dichiarazione delle variabili e funzioni ma comunque deve rispettare delle regole:
  • Le istruzioni devono terminare con il ';'
  • Apici singoli e doppi servono per indicare una stringa;
  • Inserimento commenti con "/* commento */" o "// commento";
  • Caratteri escape
\b - backspace
\f - new page
\n - new line
\r - carriage return
\t - TAB
\\ - backslash
\' - apostrofo o apice singolo
\" - doppi apici

Bisogna anteporre la keyword "var" per dichiarare una variabile;ricordo che non esistono i tipi di dato e quindi potete con una variabile che memorizza un intero buttarci dentro una stringa.
PHP:
var miavariabile = 0;
var pigreco =  3.14;
var c = pigreco*(3/2)*miavariabile;
Funzioni
Le funzioni sono blocchi di codice, che possono essere richiamati in un determinato contesto e specialmente in questo caso all'avvenimento di un determinato "Evento".Ad esempio posso richiamare una funzione se l'utente preme un determinato bottone, se il puntatore si trova in una determinata zona della pagina e molto altro ancora, cose che vedremo più avanti.
Per dichiarare una funzione bisogna anteporre la keyword "function"
Le variabili hanno visibilità locale solo sulla funzione nella quale le dichiarate, se invece ne dichiarate una fuori da tutte le funzioni allora hanno una visibilità globale.
Ricordate che il codice di una funzione viene eseguito fino alla keyword "return" (compreso) e tutto ciò che c'è dopo verrà ignorato.
PHP:
function miafunzione(parametro1,parametro2){
//codice
}

PHP:
function quadrato(n){
return n*n;
}
var j = 5;
alert(quadrato(j)); // mi stamperà 25
// se invece il valore mi serve basta fare cosi
var c= quadrato(j);// chiamata e il valore ritornato lo pongo nella variabile c
Accenno che in javascript le funzioni possono essere viste come oggetti, con le proprie proprietà e metodi e quindi è possibile fare cose del genere:
PHP:
function quadrato(n)
{
return n*n;
}
var j = quadrato;
// equivalente a
var j = quadrato.toString() // toString è metodo che converte in una stringa
alert(j)//mi stamperà tutto il codice della funzione quadrato
Ma non mi dilungo troppo sull'argomento in quanto ho paura di rischiare di confondervi le idee.

Gli operatori sono gli stessi del c/c++:

  • Operatori aritmetici: +,-,*,/,++,--;
  • Assegnazione: +=, -=, *=, /=, = ;
  • Comparazione: ==,!=, <,>, >=,<=);
  • Operatori logici: &&(and),||(or), !(not);
  • Operatore typeof: restituisce il tipo di dato di un operando(es. typeof "inforge" restituisce "string")
  • Operatore condizionale (op=(nhoya == "pro") "falso":"vero");

Le iterazioni for/while/do-while le do per scontato che le sappiate usare dato che sono UGUALI sintatticamente e semanticamente al c/c++, java.
Ve ne introduco uno particolare : il for..in, assieme agli Array.
Array
Un array in javascript viene dichiarato in questo modo
PHP:
var arr = new Array("ciao","bello");//dichiarazione e inizializzazione di un vettore non associativo
//oppure
var arr = new Array();
arr[0] = "ciao";
arr[1] = "bello";
Per via delle nuove API a disposizione è consigliato utilizzare, invece, la notazione[cit.Scatenatore]
PHP:
var arr = [];
I vettori in javascript sono strutture dati eterogenee, quindi un array può contenere stringhe e numeri, e possono essere gestiti normalmente come in tutti i linguaggi di programmazione, però ci sono alcuni metodi e una proprietà che possono ritornarci utili:​

  • length = proprietà che ritorna lunghezza dell'array, non funziona su array Associativi;​
PHP:
var arr = new Array("ciao","bello");
alert(arr.length);//mi stampa 2

  • push(elemento): aggiunge un elemento in coda all'array e restituisce la nuova lunghezza​
PHP:
var arr = new Array("ciao","bello");
      aggiungi = arr.push("tizio");
alert(arr) // mi stampa tutto l'array con l'elemento aggiunto

  • concat(): aggiunge più di un elemento all'array e restituisce la nuova lunghezza;​
PHP:
var arr = new Array("ciao","bello");
aggiungi = arr.concat("tizio","tipo");
alert(arr) // mi stamperà tutto l'array con gli elementi aggiunti;
alert(aggiungi) // mi stamperà la dimensione dell'array;

  • pop():elimina l'elemento alla fine dell'array e restituisce il valore dell'elemento eliminato​
PHP:
var arr = new Array("ciao","bello");
tolto = arr.pop();
alert("Elemento tolto: "+tolto);

  • shift(): stesso discorso del pop, solo che elimina dall'inizio dell'array​
  • reverse(): inverte l'ordine degli elementi dell'array;​
PHP:
var arr = new Array("ciao","bello");
arr.reverse();
alert(arr);//stamperà "bello,ciao" anzichè "ciao,bello"
C'è ne sono tanti altri, spero che vi accontentiate con quelli sopra elencati :\

Array Associativi
Gli array associativi non sono altro che dei normali array, solo che il loro indice non è numerico (0,1,2...) ma può essere anche una stringa ( 'ciao','blala');
Esempio:
PHP:
<script type="text/javascript">
function staffInforg()
{
    var staff = new Array();
    staff['boss'] ="murdercode";
    staff['nob'] = "nhoya";
    staff['Sezione S4league'] = "Hypnotize_";
}
staffInforg();//richiamo
</script>
Come vedete, il loro vantaggio è piuttosto notevole, dato che è possibile associare all'indice l'elemento dell'array con un senso logico.
Il loro svantaggio sta nella loro gestione.Array non associativo != Array associativo e perciò anche la loro gestione deve essere diversa.Infatti gli elementi vengono trattati come proprietà di un oggetto usando le rispettive chiavi.Quindi un array del genere va visto come un oggetto e perciò i metodi tipo length di un normale array non funzionerebbero.È qui che ci torna utile il ciclo For..in
For...In

Il for...in è un tipo di ciclo seriale utilizzato sopratutto per gestire gli oggetti( le loro proprietà).
È più facile da capire che da spiegare quindi vi mostro subito semplice esempio:
PHP:
<script type="text/javascript">
function test()
{
  var ciao= new Array("nhoya","mi","annhoya");
  var i;
  for( i in ciao) alert("indice "+ i+"="+ciao[i]);
}
ciao();//richiamo
</script>
In output vedrete stampare il contenuto dell'array nell'indice i.Perciò è semplice dedurre che con il ciclo for in la variabile i assume di volta in volta il valore dell l'indice dell'array ciao.
Ora come ora sembra che sia inutile invece già con gli Array Associativi il discorso cambia.
Se provate a fare:
PHP:
<script type="text/javascript">
function staffInforg()
{
    var staff = new Array();
    staff['boss'] ="murdercode";
    staff['nob'] = "nhoya";
    staff['Sezione S4league'] = "Hypnotize_";
alert(staff);// occhio qua
}
staffInforg();//richiamo
</script>
Non vi stamperà nulla.Questo per il discorso che vi ho fatto prima
Ecco come sarebbe correttamente
PHP:
<script type="text/javascript">
function staffInforg()
{
    var staff = new Array();
    staff['boss'] ="murdercode";
    staff['nob'] = "nhoya";
    staff['Sezione S4league'] = "Hypnotize_";
var i;
for( i in staff)
  alert("indice "+ i+"="+staff[i]);
}
staffInforg();//richiamo
</script>
Cosi avrete una stampa corretta, con l'indice e il contenuto.​


Credo di aver introdotto il linguaggio, più o meno.

Premetto che la guida è stata scritta interamente da me e presto ci sarà il tutorial sulla gestione dei form, gestione DOM E forse BOM tramite javascript e più in là, se avrò tempo, introdurrò la libreria jQuery, ma non credo.
Potete copiare, basta che citate Inforge.net come forum da dove l'avete preso

Singh™
Inforge.net

 
Innanzitutto complimenti per il lavoro, vorrei solo dare il mio contributo in certi punti per migliorare il thread.

Operatori per gli oggetti: il famoso '.';
Non ha senso metterlo così, pensa ai punti nell'esprimere numeri decimali. :p

Operatore per le funzioni = ();
Come sopra, pensale nelle espressioni aritmetiche. ;)

PHP:
function miafunzione(){//Ricordatevi le '()' finali}
Direi che introdurre la definizione di funzioni così non ha molto senso. In particolar modo per il commento, anche perché la maggior parte delle volte ci aspettiamo dei parametri e quindi bisognerebbe fare un discorso anche su quelli.
Inoltre meglio andare a capo, altrimenti la parentesi graffa finisce nel commento in linea.​

PHP:
var arr = new Array();
Per via delle nuove API a disposizione è consigliato utilizzare, invece, la notazione:
PHP:
var arr = [];

È una proprietà, non un metodo, infatti quando lo usi poi nel codice non usi le parentesi. ;)

Per quanto riguarda gli array associativi è da tenere d'occhio l'oggetto Map, anche se purtroppo non è ancora uno standard.
 
Innanzitutto complimenti per il lavoro, vorrei solo dare il mio contributo in certi punti per migliorare il thread.
Non ha senso metterlo così, pensa ai punti nell'esprimere numeri decimali. :p
Come sopra, pensale nelle espressioni aritmetiche. ;)

Direi che introdurre la definizione di funzioni così non ha molto senso. In particolar modo per il commento, anche perché la maggior parte delle volte ci aspettiamo dei parametri e quindi bisognerebbe fare un discorso anche su quelli.
Inoltre meglio andare a capo, altrimenti la parentesi graffa finisce nel commento in linea.​
Per via delle nuove API a disposizione è consigliato utilizzare, invece, la notazione:
PHP:
var arr = [];
È una proprietà, non un metodo, infatti quando lo usi poi nel codice non usi le parentesi. ;)

Per quanto riguarda gli array associativi è da tenere d'occhio l'oggetto Map, anche se purtroppo non è ancora uno standard.
Ti ringrazio per le dritte.
Hai ragione per le funzioni, sono stato troppo superficiale, ho sistemato.
Ho cancellato le frasi sull'operatore . e ()
 
Codice:
[COLOR=#0000BB][FONT=monospace]staff[/FONT][/COLOR][COLOR=#007700][FONT=monospace][[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]'boss'[/FONT][/COLOR][COLOR=#007700][FONT=monospace]] =[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"murdercode"[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
    [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]staff[/FONT][/COLOR][COLOR=#007700][FONT=monospace][[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]'nob'[/FONT][/COLOR][COLOR=#007700][FONT=monospace]] = [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"nhoya"[/FONT][/COLOR][COLOR=#007700][FONT=monospace];[/FONT][/COLOR]

No vabbe :rofl:

Bella guida comunque, aspetto con ansia il sequel :)
 
Codice:
[COLOR=#0000BB][FONT=monospace]staff[/FONT][/COLOR][COLOR=#007700][FONT=monospace][[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]'boss'[/FONT][/COLOR][COLOR=#007700][FONT=monospace]] =[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"murdercode"[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
    [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]staff[/FONT][/COLOR][COLOR=#007700][FONT=monospace][[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]'nob'[/FONT][/COLOR][COLOR=#007700][FONT=monospace]] = [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"nhoya"[/FONT][/COLOR][COLOR=#007700][FONT=monospace];[/FONT][/COLOR]

No vabbe :rofl:

Bella guida comunque, aspetto con ansia il sequel :)
Avrei voluto concludere js ma non ho mai tempo :\ nel continuare dopo

Comunque qualcosa su Sql c'è già.Credo
 
Stato
Discussione chiusa ad ulteriori risposte.