Cand se creaza o functie ii putem defini si un numar de parametri (sau argumente) pe care le accepta, lucru de care se tine cont in momentul apelarii ei.
Sunt situatii in care dorim sa transmitem functiei un numar diferit de argumente, care poate fi mai mic sau mai mare decat numarul de parametri ai functiei.
Intr-o astfel de situatie se verifica in corpul functiei daca a fost transmisa valoare pentru parametri definiti, daca nu, acel parametru e undefined
(evaluat ca False) si se poate da o valoare implicita (default).
<div id='dv1'>Content dv1</div> <div id='dv2'>Content dv2</div> <script> function sayHi(name){ //daca nu e primita valoare pt. 'name', seteaza un text implicit if(!name) var name ='Vizitator'; return 'Salut '+ name; } //adauga in #dv1 rezultatul transmis de apelarea functiei fara argument document.getElementById('dv1').innerHTML = sayHi(); //a doua apelare, cu argument document.getElementById('dv2').innerHTML = sayHi('MarPlo'); </script>
function numeF(p1=v1, p2=v2){ //codul care va fi executat }- 'p1' si 'p2' sunt parametrii; iar 'v1' si 'v2' reprezinta valorile implicite pentru fiecare.
<div id='dv1'>Div dv1</div> <div id='dv2'>Div dv2</div> <script> //creaza functia cu o valoare default pt. parametru function sayHi(name='Vizitator'){ return 'Salut '+ name; } //adauga in #dv1 rezultatul transmis de apelarea functiei fara argument document.getElementById('dv1').innerHTML = sayHi(); //a doua apelare, cu argument document.getElementById('dv2').innerHTML = sayHi('MarPlo'); </script>
Proprietatea arguments
retine intr-un obiect tip array argumentele (valorile) transmise la apelarea unei functii, in ordinea adaugarii lor (cu primul index 0).
Aceasta proprietate nu poate fi aplicata la 'arrow functions'.
Valoarea ei nu este un array, ci un obiect cu indexi numerici. Dar i-se poate aplcica length
pentru aflarea numarului de elemente.
function numeF(){ var args = numeF.arguments; //codul care va fi executat }- Variabila 'args' contine obiectul cu argumentele transmise la apelarea functiei numeF().
<div id='dv1'>Div-ul #dv1</div> <div id='dv2'>Div-ul #dv2</div> <div id='dv3'>Div-ul #dv3</div> <script> const f1 = function(x){ //retine obiectul-ul cu argumentele transmise la apelare f1() var args = f1.arguments; //daca nu e nici un argument, seteaza valoarea 0 pt. 're' //daca e un singur argument, il dubleaza //daca sunt mai multe, le aduna if(args.length ==0) var re =0; else if(args.length ==1) var re = args[0]*2; else if(args.length >1){ var re =0; for(var i=0; i<args.length; i++) re += args[i]; } return re; } //adauga in elemente HTML rezultatul apelarii lui f1() de trei ori, cu nr. diferit de argumente document.getElementById('dv1').innerHTML ='f1() fara argument returneaza: '+ f1(); document.getElementById('dv2').innerHTML ='f1(3) returneaza: '+ f1(3); document.getElementById('dv3').innerHTML ='f1(2, 5, 3) returneaza: '+ f1(2, 5, 3); </script>
<div id='dv1'>Callback function.</div> <script> //functia callback, adauga 'Salut name' in #dv1 const fcb = (name)=>{ document.getElementById('dv1').innerHTML ='Salut '+ name; } //functia la care va fi transmisa si utilizata functia callback function f1(id, callback){ if(id >1) callback('MarPlo.net'); } //apeleaza f1() cu un Id si functia callback fcb() f1(8, fcb); </script>
<div id='dv1'>Anonimous callback function.</div> <script> //functia la care va fi transmisa si utilizata functia callback function f1(id, callback){ if(id >1) callback('GamV.eu'); } //apeleaza f1() cu un Id si functie callback anonima f1(8, (name)=>{ document.getElementById('dv1').innerHTML ='Salut '+ name; }); </script>
O functie JavaScript poate fi recursiva, adica se poate autoapela.
- Exemplu, o functie JavaScript recursiva care afla factorialul unui numar precizat "n".
<div id='dv1'>Exemplu functie recursiva</div> <script> //returneaza factorial de n function factorial(n){ var re; if(n >0) re = n*factorial(n-1); //auto-apelare else if(n ==0) re =1; return re; } //afisaza in #dv1 factorial de 8 document.getElementById('dv1').innerHTML ='Factorial de 8 este: '+ factorial(8); </script>
<input type="number" name="points" min="5" max="80" />
#id { filter:alpha(opacity=40); /* for IE */ opacity:0.4; }
var num = 12.84567; alert( num.toPrecision(3) ); // 12.8
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net"); shuffle($lang); var_export($lang); // array (0=>"coursesweb.net", 1=>"PHP", 2=>"JavaScript")
She is the best in our class. - Ea este cea mai buna din clasa noastra.
Él es el mejor en nuestra clase. - El este cel mai bun din clasa noastra.