Javascript 3

Transcript

Javascript 3
Funzioni in JavaScript
L’istruzione function
Una
Una
funzione è un insieme di istruzioni
JavaScript che esegue un compito
specifico
Per usare una funzione bisogna prima
definirla, poi lo script può invocarla
In JavaScript esistono tre modi per
definire una funzione
Javascript – 3
Le funzioni
– Attraverso l’istruzione function
– Attraverso il costruttore Function
– Attraverso una funzione letterale
Tecnologie di Sviluppo per il WEB
parti
funzione è composta da quattro
– La parola chiave function
– Il nome della funzione
– Una lista opzionale di parametri racchiusa
da parentesi tonde
– Il corpo della funzione (serie di istruzioni
JavaScript) racchiusi da parentesi graffe
Non
occorre dichiarare il tipo della
funzione
2
Tecnologie di Sviluppo per il WEB
Sintassi
Esempi – 1
Esempi – 2
function nome_funzione ( argomenti ) {
function quadrato(number) {
return number * number;
}
Il
istruzioni JavaScript
}
I nomi delle funzioni sono degli identificatori,
quindi si applicano le stesse regole viste per i
nomi da assegnare alle variabili
Tecnologie di Sviluppo per il WEB
4
return è opzionale
function print(msg) {
document.write(msg + "<BR>");
}
Dopo che una funzione è stata definita
può essere invocata attraverso
l’operatore di chiamata
function distanza(x1, y1, x2, y2) {
var dx = (x2 - x1);
var dy = (y2 - y1);
return Math.sqrt(dx*dx + dy*dy);
}
Tecnologie di Sviluppo per il WEB
3
print("Ciao a tutti! ");
5
Tecnologie di Sviluppo per il WEB
6
Funzioni ricorsive
Argomenti di una funzione
Dove definire le funzioni?
È
Il
Possono
possibile definire funzioni ricorsive
– Att.ne: passando oggetti,
modificarne le loro proprietà
function fattoriale(x) {
if (x <= 1)
return 1;
else
return x * fattoriale(x-1);
}
Tecnologie di Sviluppo per il WEB
essere passati un numero
variabili di argomenti
– In più od in meno di quelli specificati nella
definizione della funzione
– Vedremo in seguito come accedere a tutti
gli argomenti passati
7
Permette di definire delle funzioni in maniera
dinamica
Il costruttore si aspetta un numero variabili di
argomenti di tipo stringa
Per definire una funzione che non prende
argomenti, è sufficiente passare a Function()
solo il corpo della funzione
Tecnologie di Sviluppo per il WEB
Tecnologie di Sviluppo per il WEB
10
La
cosa migliore è definire tutte nella
sezione HEAD
Meglio
ancora, mettiamole in un file
esterno con estensione .js
– Le possiamo riusare facilmente…
Tecnologie di Sviluppo per il WEB
9
Funzioni come dati
In
JavaScript le funzioni sono viste come
dati, quindi possono anche essere
var f = new Function("x", "y", "return x*y;");
comparire in qualsiasi punto
del documento HTML
8
Utilizzo del costruttore Function()
– L’ultimo argomento è il corpo della funzione –
contiene istruzioni JavaScript arbitrarie separate
da punto e virgola
– Tutti gli altri argomenti specificano i nomi degli
argomenti della funzione che si sta definendo
possiamo
Possono
Il costruttore Function()
passaggio avviene per valore
– assegnate a variabili
– memorizzate nelle proprietà di oggetti
– memorizzate come elementi di un array
– passate come argomento di una funzione
– restituite come valore da una funzione
Per invocare la funzione appena definita si
usa f(3,4);
var g = new Function("x", "return x*x;");
var hi = new Function("alert(‘Ciao a tutti’);");
Tecnologie di Sviluppo per il WEB
11
Tecnologie di Sviluppo per il WEB
12
Funzioni letterali – 1
Funzioni letterali – 2
Una
Funzioni
funzione letterale è un’espressione
che definisce una funzione senza nome
La sintassi di una funzione letterale è
molto simile a quella dell’istruzione
function tranne per il fatto che:
– è usata come un’espressione piuttosto che
come un’istruzione
– non è necessario specificare il nome della
funzione
Tecnologie di Sviluppo per il WEB
13
Altri esempi di funzioni letterali
Tecnologie di Sviluppo per il WEB
Definizione e memorizzazione
a[0] = function(x) { return x*x; };
Definizione di una funzione e suo passaggio
ad un’altra
ogg.sort(function(a,b) {return a-b;} );
var f = function(x) { return x*x; };
Definizioni
più o meno equivalenti sono:
var f = new Function(“x”, “return x*x;”);
function f(x) { return x*x; }
14
Scoping lessicale
Esempi di funzioni letterali
definite in questo modo sono a
volte chiamate funzioni lambda
Sono utili quando devono essere usate
una sola volta e non gli si deve
assegnare un nome
Possono essere memorizzate in una
variabile, passate come argomento di
una funzione o invocate direttamente
Tecnologie di Sviluppo per il WEB
15
Dinamico vs lessicale
In JavaScript le funzioni hanno uno scoping
lessicale (statico) invece di dinamico
Ciò significa che sono in esecuzione nell’
ambiente (scope) in cui sono state definite
non nello scope in cui sono invocate
– Fanno parte dello scope variabili locali ed
argomenti della funzione
Supponiamo che una funzione utilizzi un
simbolo non definito al suo interno
Con lo Scoping Lessicale
– La funzione usa la definizione che il simbolo ha
nell'ambiente in cui la funzione è definita
Con lo Scoping Dinamico
– usa la definizione che esso ha nell'ambiente in cui
la funzione è chiamata
Definizione ed invocazione
var cento = (function(x) { return x*x; }) (10);
Tecnologie di Sviluppo per il WEB
16
Tecnologie di Sviluppo per il WEB
17
Tecnologie di Sviluppo per il WEB
18
Esempio
var x = 10;
function provaScope(y) { return y + x; }
alert(provaScope(7)); // Visualizza 17
function testEnv() {
var x = -1;
return provaScope(7); // Cosa visualizza ?
}
Con lo scopinig lessicale visualizza 17
Con lo scoping dinamico visualizza 6
Tecnologie di Sviluppo per il WEB
19
Esempio – 1
function max() {
var m = Number.NEGATIVE_INFINITY;
for(var i = 0; i < arguments.length; i++)
if (arguments[i] > m)
m = arguments[i];
return m;
}
var massimo = max(10, 32, 2, 3, 43, 4, 5, 30, 6);
Tecnologie di Sviluppo per il WEB
22
L’oggetto arguments – 1
L’oggetto arguments – 2
Ogni
Per
volta che una funzione viene
invocata, oltre all’oggetto call viene
creato l’oggetto arguments
Contiene i parametri della funzione e il
nome (la proprietà callee) della funzione
che è stata invocata
In questo modo si possono gestire
funzioni con un numero variabili di
argomenti
accedere al primo parametro della
funzione si usa arguments[0]
In generale per accedere al parametro
i-esimo si usa arguments[i-1]
Per sapere quanti parametri sono stati
passati alla funzione si usa la proprietà
length:
(arguments.length)
Il nome della funzione invocata è
memorizzata nella proprietà callee:
(arguments.callee)
Tecnologie di Sviluppo per il WEB
Tecnologie di Sviluppo per il WEB
20
Esempio – 2
Numero di argomenti di una funzione
function f(x, y, z) {
if (arguments.length != 3) {
msg= "La funzione f è chiamata con ";
msg+= arguments.length;
msg+= " argomenti, ma ne aspetta 3.";
alert( msg );
return null;
}
// esecuzione della funzione f...
}
Possiamo
Tecnologie di Sviluppo per il WEB
21
anche verificare con quanti
argomenti è stata definita una funzione
andando ad esaminare la proprietà
length dell’oggetto funzione
– arguments.callee.length
Questa
proprietà non deve essere
confusa con arguments.length
È
disponibile sia all’interno che
all’esterno della funzione
23
Tecnologie di Sviluppo per il WEB
24
Esempio
Funzioni globali JavaScript – 1
function check( param ) {
var attuali = param.length;
vat attesi = param.callee.length;
if (attuali != attesi)
return false;
else
return true;
}
// nella funzione da verificare
if(check(arguments)) ….
Tecnologie di Sviluppo per il WEB
– Riceve in input una stringa e restituisce una
stringa in cui tutti gli spazi, simboli di
punteggiatura, caratteri accentati ed ogni altro
carattere che non fa parte dell’insieme dei caratteri
ASCII sono codificati in un formato esadecimale
che può essere rappresentato su qualsiasi
piattaforma
25
Tecnologie di Sviluppo per il WEB
– Riceve in input una stringa che rappresenta del
codice javaScript da eseguire. L’interprete
JavaScript valuta il codice e lo esegue quando la
funzione eval è invocata.
Tecnologie di Sviluppo per il WEB
27
In
JavaScript un oggetto è un insieme di
identificatori dotato di un nome
non è un linguaggio
orientato agli oggetti
– Ogni identificatore è interpretabile come
una proprietà dell’oggetto, può essere un
dato oppure una funzione
– Le proprietà sono come i membri delle
classi in C++ o Java
supporta l’eredità basata su classi
– Non può supportare il polimorfismo
Ha
– Riceve in input un argomento e restituisce true se
il valore dell’argomento non è un numero;
altrimenti, restutisce false.
Gli oggetti in JavaScript – 1
JavaScript
Non
isNaN(val)
26
JavaScript e gli oggetti
eval(str)
isFinite(val)
– Riceve in input un argomento numerico e
restituisce true se il valore dell’argomento è
diverso da NaN, Number.POSITIVE_INFINITY o
Number.NEGATIVE_INFINITY;
• altrimenti, restutisce false.
unescape(str)
– Riceve in input una stringa e restituisce una
stringa in cui tutti i caratteri precedentemente
codificati con la funzione escape sono decodificati
Funzioni globali JavaScript – 3
Funzioni globali JavaScript – 2
escape(str)
un’eredità basata su prototipi
– Una cosa abbastanza differente da quello
cui siete abituati con C++ o Java
Tecnologie di Sviluppo per il WEB
28
Tecnologie di Sviluppo per il WEB
29
Tecnologie di Sviluppo per il WEB
30
Le classi e JavaScript
Creazione di oggetti in JavaScript
In
Javascript non esistono classi
Un oggetto è un insieme di proprietà,
ognuna avente un nome ed un valore
– La struttura di oggetto Javascript viene
definita dal costruttore usato per crearlo
A
partire da Javascript 1.2, si possono
creare
oggetti
anche
elencando
direttamente una sequenza di coppie
nome:valore separate da virgole:
– var o = { x:10, y:7 };
– Elenco di proprietà con i rispettivi valori
La
sequenza di coppie è racchiusa fra
parentesi graffe
Tecnologie di Sviluppo per il WEB
31
È possibile, a prescindere da come un
oggetto è stato definito, aggiungere o
rimuovere proprietà dell’oggetto
È possibile aggiungere dinamicamente nuove
proprietà semplicemente nominandole e
usandole:
– o.z = -1; // {x:7, y:2} diventa {x:7, y:2, z:-1}
Si possono rimuovere dinamicamente delle
proprietà mediante l'operatore delete:
– delete o.x // {x:7, y:2, z:-1} diventa {y:2, z:-1}
Tecnologie di Sviluppo per il WEB
34
– o.x=3; //il valore della proprietà x diventa 3
Per
evitare di ripetere il nome
dell’oggetto si può usare il costrutto with
with (o) {
x=7;
y=2;
}
Tecnologie di Sviluppo per il WEB
33
La parola chiave this
Definire
metodi è semplicemente un
caso
particolare
dell'aggiunta
di
proprietà
o.getX = function() { return this.x; }
All’interno
del metodo, per far
riferimento
alle
altre
proprietà
dell’oggetto si deve usare la parola
chiave this seguita dal punto e dal
nome della proprietà
Il metodo definito vale per il solo
oggetto a cui è stato aggiunto (e.g., o)
Tecnologie di Sviluppo per il WEB
le proprietà sono pubbliche,
possiamo accedere ad esse tramite la
dot notation
32
Metodi per singoli oggetti
Aggiunta e rimozione di proprietà
Tecnologie di Sviluppo per il WEB
Accesso alle proprietà
Tutte
35
All’interno
di metodi la parola chiave
this rappresenta l’indirizzo dell’oggetto
corrente, quello a cui appartiene il
metodo
Senza
this avremmo fatto riferimento
all’ambiente locale del metodo getX()
– Verrebbe segnalato un errore se non
esistesse una variabile globale chiamata x
(locale, se fosse stata definita).
Tecnologie di Sviluppo per il WEB
36
Un altro modo per creare oggetti
Il costruttore – 1
Per
creare un oggetto vuoto si può
usare la seguente notazione
var oggetto = new Object();
Object() è un costruttore che restituisce
un oggetto vuoto
– Senza
nessuna
proprietà
dobbiamo settarle noi a mano
– Si può fare di meglio …
Tecnologie di Sviluppo per il WEB
settata,
Il costruttore – 2
Un qualsiasi oggetto in Javascript può essere
costruito da una speciale funzione chiamata
costruttore
All'interno
del costruttore si specificano
le proprietà (iniziali) dell' oggetto,
elencandole con la dot notation e la
parola chiave this
– Stabilisce come l'oggetto è fatto specificando le
sue proprietà
– Il nome del costruttore è deciso dall’utente
I
costruttori
sono
invocati
mediante
l'operatore new
All’interno del costruttore, per far riferimento
alle proprietà dell’oggetto si deve usare la
parola chiave this seguita dal punto e dal
nome della proprietà
37
Tecnologie di Sviluppo per il WEB
38
this rappresenta l’indirizzo dell’oggetto
corrente quello che è stato creato con
l’operatore new
Tecnologie di Sviluppo per il WEB
Esempio di Oggetto – 1
Esempio di Oggetto – 2
Esempio di Oggetto – 3
Tipo
function Orologio(ore, minuti) {
function SettaOra(ore, minuti) {
oggetto
this.ore = ore;
– Orologio
Proprietà
this.ore=ore; this.minuti=minuti; }
this.minuti = minuti;
– Ore
– Minuti
function DammiOra() {
this.SettaOra = SettaOra;
var msg = this.ore+":"+this.minuti;
this.DammiOra = DammiOra;
Metodi
document.write("<p>Sono le "+msg); }
}
– DammiOra
– SettaOra
39
Notate l’assenza delle parentesi per metodi
Senza this avremmo fatto riferimento all’ambiente
locale della funzione Orologio o a quello globale
var orario = new Orologio(09, 32);
orario.DammiOra();
esempio
orario.SettaOra(10,32);
orario.DammiOra();
Tecnologie di Sviluppo per il WEB
40
Tecnologie di Sviluppo per il WEB
41
Tecnologie di Sviluppo per il WEB
42
Simulare proprietà private
Oggetti come array associativi – 1
Le proprietà di un oggetto sono pubbliche, si
possono "simulare" proprietà private, tramite
variabili locali della funzione costruttore
tal caso l’oggetto è visto come un
array associativo
– invece di accedere ad un elemento di un
array tramite un indice vi accediamo
tramite un nome
43
Math
Number
– Rappresenta valori numerici primitivi
Object
RegExp
String
– Contiene le funzionalità di base condivise da tutti
gli oggetti JavaScript
Tecnologie di Sviluppo per il WEB
• Rappresenta una data
– Function
• Specifica una funzione rappresentata come
stringa
Tecnologie di Sviluppo per il WEB
45
È
constructor
creare un oggetto Object() si usa la
seguente sintassi
NuovoOggetto = new Object();
46
• Rappresenta un valore booleano
– Date
Proprietà e metodi di Object – 1
Per
– Rappresenta una stringa
– Boolean
L’oggetto Object
– Possono essere sovrascritti
– Rappresenta un’espressione regolare
– Array
44
la “superclasse” che contiene tutte le
caratteristiche di tutti gli oggetti
JavaScript
Tutti i suoi metodi e le sue proprietà
sono ereditati da tutti gli altri oggetti
– Fornisce costanti e funzioni matematiche di base
Tecnologie di Sviluppo per il WEB
ha un insiemi di oggetti
predefiniti istanziabili attraverso gli
opportuni costruttori
• rappresenta un array
In
Core-Object – 2
possibile accedere alle proprietà di un
oggetto come se l’oggetto stesso fosse
un array
var p = {x:3, y:4);
vx = p["x"];
Rettangolo = function() {
var lunghezza, altezza;
this.setL = function(x) { lunghezza = x; }
this.setA = function(y) { altezza = y; }
this.getL = function() { return lunghezza; }
this.getA = function() { return altezza; }
}
Tecnologie di Sviluppo per il WEB
È
Core-Object – 1
JavaScript
Tecnologie di Sviluppo per il WEB
47
– Proprietà che identifica il costruttore
dell’oggetto
– Spesso usato all’interno di un if else
var p1 = new Punto2D(1,1);
if(p1.constructor == Punto2D )
alert("p1 è di tipo Punto2D");
else
alert("Non conosco il tipo di p1");
Tecnologie di Sviluppo per il WEB
48
Proprietà e metodi di Object – 2
– Restituisce una stringa che rappresenta il tipo e/o
il valore di un oggetto su cui è invocato
toLocaleString()
Risultato
<SCRIPT TYPE="text/javascript">
function print(msg) {document.write(msg)}
var d = new Date();
print(d+"<br>");
print("<b>toString</b> <br>" + d.toString() +"<br>");
print("<b>toLocaleString</b> <br>"+d.toLocaleString());
– Simile a toString(), ma restituisce una stringa
localizzata
• La stringa dipende dalla lingua supportata dal browser
che esegue il codice
Esempio
toString()
hasOwnProperty(nome)
– Restituisce true se l’oggetto ha una proprietà (non
ereditata) che si chiama nome, false altrimenti
Versione inglese di
Netscape7
</SCRIPT>
esempio
Tecnologie di Sviluppo per il WEB
49
Tecnologie di Sviluppo per il WEB
50
Tecnologie di Sviluppo per il WEB
Oggetto Array – 1
Oggetto Array – 2
Accesso ad array
Costrutto
Altri
Per
fondamentale nei linguaggi di
programmazione permette di iterare su
insiemi di oggetti
– gli oggetti possono avere tipi diversi
Non
evitare di accedere a posizioni di un
array che sono undefined è sufficiente
utilizzare del codice simile al seguente
modi per definire un array
– var nome = new Array(el0, el1, ..., elN-1)
– var nome = new Array(lunghezza)
Le
seguenti istruzioni creano un array di
due elementi lungo 1000
occorre dimensionare l’array
var a = new Array();
a[0] = 1; a[999]="casa";
– basta var pippo = new Array( )
Possiamo
conoscere la sua lunghezza
tramite la proprietà read-only length
Tecnologie di Sviluppo per il WEB
51
L’array
è sparso
– occupa solo due posizioni, le altre hanno
un valore undefined
52
Tecnologie di Sviluppo per il WEB
53
for(var i =0; i<a.length; i++)
if(a[i] != undefined) {
msg = "Posizione: " + i + " Valore: " + a[i];
document.write(msg);
}
Tecnologie di Sviluppo per il WEB
54
Metodi di Array – 1
Metodi di Array – 2
concat
– Crea un nuovo array contenente gli elementi
dell’array su cui è invocato seguito dai suoi
argomenti. Se qualcuno degli argomenti è un
array, esso è appiattito ed i suoi elementi sono
aggiunti al nuovo array
• NuovoArray = a.concat(3,5,6)
• NuovoArray = a.concat(array1)
• NuovoArray = a.concat(5,7,array2,6)
gli
Tecnologie di Sviluppo per il WEB
Elementi
cancellati da a
– Aggiunge uno o più elementi alla fine dell’array e
restituisce l’ultimo elemento aggiunto
Tecnologie di Sviluppo per il WEB
– Aggiunge e/o rimuove elementi da un array
• NuovoArray = a.splice(PI, NE,el1,…eln)
• eli può essere un array che non viene appiattito
sort
– Ordina gli elementi di un array (ordinamento
alfabetico)
• a.sort();
58
unshift
– Aggiunge uno o più elementi all’inizio di un array
spostanto gli elementi già presenti in avanti
push
• NuovaLunghezza = a.unshift(3,4,5,6)
slice
– Estrae una sezione di un array restituendone uno nuovo
• NuovoArray = a.slice(PuntoIniziale, NumeroElementi)
56
Tecnologie di Sviluppo per il WEB
Oggetto Date
Costruttori
Favorisce
la gestione delle date
– Convenzione UNIX: memorizzato in
millisecondi a partire dal 1/1/1970
– La data attuale dipende dalla macchina
client
– Non ha proprietà e, grossomodo, ha tre tipi
di metodi:
• NuovoArray = a.splice(PuntoIniziale)
• NuovoArray = a.splice(PuntoIniziale, NumeroElementi)
Tecnologie di Sviluppo per il WEB
• primo = a.shift()
– Rimuove e restituisce l’ultimo elemento dall’array
55
– Rimuove elementi da un array
pop
• ultimo = a.push(el1, ..., elN)
Metodi di Array – 4
splice
• a.reverse()
shift
– Rimuove e restituisce il primo elemento da un
array spostando tutti gli altri elementi di una
posizione
– Inverte il contenuto di un array
• Str = a.join(sepatatore);
• Se non si specifica separatore è usata la virgola
• ultimo = a.pop();
join
– Restituisce una stringa contenente tutti
elementi dell’array separati da separatore
Metodi di Array – 3
reverse
• getX
per ottenere informazioni
• setX
per modificare alcuni dati
• toX per convertire in formati diversi
Tecnologie di Sviluppo per il WEB
59
57
Date()
Date(millisecondi)
Date(stringa)
Date(Y,M,D,H,M,S,ms)
–
–
–
–
–
–
M da 0 a 11
D da 1 a 31
H da 0 a 23
M da 0 a 59
S da 0 a 59
ms da 0 a 999
Tecnologie di Sviluppo per il WEB
60
Metodi di Date
L’oggetto String
Esempio
getDate()
L’oggetto
<SCRIPT TYPE="text/javascript">
s1 = new String("1+1");
s2 = "1+1";
if(s1 == s2)
alert("sono uguali");
esempio
else
alert("sono diverse");
document.write("primo eval <br>");
document.write(eval(s1)+"<br>");
document.write("secondo eval <br>");
document.write(eval(s2)+"<br>");
</SCRIPT>
String, è un wrapper alla
stringa letterale
I metodi che possiamo applicare su
String li possiamo applicare anche su
una stringa qualsiasi
Una stringa letterale è convertita in un
oggetto String automaticamente, e
viceversa, ogni volta che è necessario
Ha una sola proprietà: length
Esistono comunque delle differenze …
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getYear()
Tecnologie di Sviluppo per il WEB
61
Metodi di String – 1
Tecnologie di Sviluppo per il WEB
62
Tecnologie di Sviluppo per il WEB
Metodi di String – 2
Metodi di String – 3
testo.split(separatore);
testo.indexOf(parola,inizio);
63
stringa.charAt(i);
– Restituisce l’i-esimo carattere di testo (da 0 a stringa.length-1)
stringa.slice(start,end);
– Restituisce la sottostringa di testo dalla posizione start a end-1
– Se start è negativo specifica una posizione dalla fine della
stringa
stringa.substring(from,to);
– Restituisce la sottostringa di testo dalla posizione from a to-1
stringa.substr(start,length);
– Restituisce la sottostringa di testo lunga length caratteri che
parte dalla posizione start
Tecnologie di Sviluppo per il WEB
64
– Restituisce un array di stringhe, dividendo testo in
sottostringhe in corrispondenza di ogni occorrenza della
stringa separatore
– È l’opposto di Array.join()
testo.toLowerCase();
– restituisce una copia della stringa testo con tutti i caratteri
convertiti in minuscolo
testo.toUpperCase();
– restituisce una copia della stringa testo con tutti i caratteri
convertiti in maiuscolo
testo.charCodeAt(i);
– restituisce il codice Unicode dell’i-esimo carattere di testo
(da 0 a testo.length-1)
Tecnologie di Sviluppo per il WEB
65
– restituisce la posizione della prima occorrenza della stringa
parola nella stringa testo (a partire dalla posizione inizio). Se
non esiste, restituisce –1
– Se inizio non è specificato la ricerca inizia dalla posizione
zero
testo.lastIndexOf(parola,inizio);
– come il metodo precedente, ma restituisce la posizione
dell’ultima occorrenza
testo.concat(testo1,testo2,…);
– restituisce una nuova stringa ottenuta concatenando testo
con testo1, testo2, …
– È equivalente a testo+testo1+testo2+…
Tecnologie di Sviluppo per il WEB
66
String ed HTML
L’oggetto Math
Esistono
Per
vari metodi che permettono di
generare codice HTML
Ad esempio
testo.bold();
restituisce la stringa testo racchiusa tra i
tag <B> e </B>
Costanti matematiche – 1
favorire
calcoli
matematici,
JavaScript incapsula costanti e funzioni
(avanzate) utili nell’oggetto contenitore
Math
Non si può usare come String, Date,
Array… per crearne nuove istanze
dettagli sul manuale JavaScript
Tecnologie di Sviluppo per il WEB
Tecnologie di Sviluppo per il WEB
– logaritmo in base 2 di e
Math.PI
Math.SQRT1_2
Math.SQRT2
Math.LN10
Math.LN2
Math.LOG10E
– costante di Eulero e (base del logaritmo naturale)
– logaritmo naturale di 10
– logaritmo in base 10 di e
68
Funzioni matematiche – 1
Math.LOG2E
– logaritmo naturale di 2
costanti matematiche sono sue
proprietà (tutte con nomi in maiuscolo)
Le funzioni sono suoi metodi
67
Costanti matematiche – 2
Math.E
– Si tratta di una sorta di oggetto statico
Le
Ulteriori
Tecnologie di Sviluppo per il WEB
Funzioni matematiche – 2
Math.abs(x)
Math.max(x,y)
Math.min(x,y)
Math.pow(x,y)
Math.sqrt(x)
– restituisce il valore assoluto di x
Math.ceil(x)
Math.floor(x)
Math.round(x)
– la costante pi-greco
– restituisce il massimo tra x e y
– restituisce l’intero immediatamente superiore a x
– 1 diviso √2
– restituisce il minimo tra x e y
– restituisce l’intero immediatamente inferiore a x
– restituisce il xy (x alla potenza y)
– restituisce √x (radice quadrata di x)
– arrotonda x all’intero più vicino
– √2
Tecnologie di Sviluppo per il WEB
70
Tecnologie di Sviluppo per il WEB
69
71
Tecnologie di Sviluppo per il WEB
72
Funzioni matematiche – 3
Math.sin(x)
Math.cos(x)
Math.tan(x)
– restituisce il seno di x
Numeri casuali
Arrotondamenti
Math.random()
A
–
– restituisce il coseno di x
La
seguente funzione restituisce un
numero casuale tra 1 e numero
– restituisce la tangente di x
Math.exp(x)
Math.log(x)
Math.round(x)
– restituisce loge x
– arrotonda x all’intero più vicino
73
Tecnologie di Sviluppo per il WEB
Oggetto Boolean
Oggetto Number
Permette
Rappresenta valori numerici primitivi
Number.POSITIVE_INFINITY
Number.NaN
di convertire valori
non-booleani in booleani
Può essere usato come un booleano
Si usa la seguente sintassi
74
Number.MAX_VALUE
Number.MIN_VALUE
Number.NEGATIVE_INFINITY
espressioni regolari sono dei pattern
usati
per
far
corrispondere
combinazioni di caratteri in stringhe.
In JavaScript le espressioni regolari
sono anche degli oggetti
Questi pattern sono usati con i metodi
exec e test di RegExp, e con i metodi
match, replace, search, e split di String
var pattern = /s$/;
var pattern = new RegExp(“s$”);
– il più grande numero rappresentabile
– il più piccolo numero rappresentabile
– Rappresenta “infinito negativo”
Tecnologie di Sviluppo per il WEB
76
Tecnologie di Sviluppo per il WEB
75
Oggetto RegExp
– Rappresenta “infinito”
Se valore è pari a false, 0, null, “”, oppure è
omesso allora boolvar vale false; altrimenti,
vale true
Tecnologie di Sviluppo per il WEB
Le
– Rappresenta un “non-numero”
var boolvar = new Boolean( valore )
volte è necessario arrotondare un
numero per un fissato numero di cifre
decimali (e.g., conversione Lira/Euro)
La seguente funzione serve allo scopo
function arrotonda(numero,decimali) {
var potenza = Math.pow(10,decimali);
return Math.round(numero * potenza)/potenza;
}
function genera(numero) {
var x = Math.random() * numero;
return Math.floor(x)+1;
}
– restituisce ex
Tecnologie di Sviluppo per il WEB
restituisce un numero pseudo-casuale
compreso tra 0 e 1
77
Tecnologie di Sviluppo per il WEB
78