Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Tous les langages proposent des fonctions natives ou prédéfinies c'est à dire prêtes à l'emploi.
Dans tous les langages le développeur peut créer ses propres fonctions ou fonctions personnelles.
Il faut distinguer les fonctions génériques des méthodes.
Nous avons déjà utilisé dans nos scripts : parseInt(), parseFloat(), isNaN().
Ce sont des fonctions natives de JavaScript.
Les fonctions natives et génériques sont peu nombreuses en JS par contre le nombre de méthodes est impressionnant.
Il faut distinguer fonctions et méthodes.
En JavaScript, une fonction est un bloc de code indépendant appelé directement par son nom, tandis qu'une méthode est une
fonction liée à une classe, appelée via la syntaxe objet.methode(paramètres).
Par exemple, vous pouvez appliquer à un objet de type String des méthodes telles trim(), toUpperCase(), toLowerCase() etc.
JavaScript propose aussi des méthodes pour les dates, les 'arrays', les 'maps', les 'sets', etc.
Tout un chapitre est consacré aux objets natifs de JS et leurs méthodes associées:
les objets natifs de JS
Tapez les commandes suivantes dans la console !
>unechaine =" aAbBcCdD "
' aAbBcCdD '
>typeof unechaine
'string'
>unechaine.toLowerCase()
' aabbccdd '
>unechaine.toUpperCase()
' AABBCCDD '
>unechaine.trim()
'aAbBcCdD'
>parseInt(100.25)
100
>parseInt("100.25")
100
>unnombre =1234.565789
1234.565789
>unnombre.trim()
... unnombre.trim is not a function
J'applique les méthodes toUpperCase(), toLowerCase()& trim() à un objet de type String (la variable "unechaine").
Notez la syntaxe : objetString.méthode(). C'est ce qu'on appelle la notation pointée.
Si je tente d'appliquer la méthode trim() à un nombre, la console retourne une erreur.
Par contre je peux appliquer la fonction parseInt() à un nombre mais aussi à une chaine (si cette chaine
est bien sûr au format numérique).
Attention typeof n'est pas une fonction mais un opérateur.
document.querySelector('button').onclick =function() : la fonction 'mère' est auto-invoquée : décrite et appelée
une fois (clic sur le bouton de commande).
puissance2 = function(nombre) : la fonction 'fille' assignée à la variable 'puissance2'.
Dans cette fonction la conversion de la chaine numérique nombre en number est inutile car on procède
ensuite à une multiplication ; donc la conversion est automatique.
La fonction puissance2() est une fonction personnelle inutile.
Essayez dans la console :
>let nombre = 12 >console.log(Math.pow(nombre,3)) 1728 >console.log(nombre**3) 1728
Thèmatique : nous voulons que le visiteur puisse modifier la couleur du texte des titres et paragraphes de la page.
Je vous propose trois solutions pour vous montrer l'évolution de la programmation de JavaScript de son
origine à aujourd'hui.
La méthode setInterval() exécute la fonction anonyme chaque seconde.
let stop = setInterval ... : lorsque vous utilisez setInterval() cette méthode renvoie un identifiant
unique que vous devez stocker dans une variable.
... onclick ="clearInterval(stop) : utilisez la méthode clearInterval() argumentée avec cette variable
pour arrêter l'exécution périodique.
Cliquez sur le bouton de commande pour cesser l'incrémentation.
Il s'agit d'une fonction qui retourne un 'array' donc plusieurs valeurs.
function mon_script()
{
function fcercle(rayon)
{
let aire = Math.round(rayon * rayon * 3.14);
let circonference = Math.round(rayon * 2 * 3.14) ;
let tab =[aire, circonference];
return tab; // retourne un tableau de 2 éléments
}
let rayon =parseInt(prompt("saisir le rayon du cercle !"));
let tableau =fcercle(rayon); //appel de la fonction fcercle
document.write("aire : " + tableau[0]);
document.write("circonférence : " + tableau[1]);
} // fin mon_script
La fonction fcercle() retourne tab qui est un array.
Donc lors de l'appel de fonction la variable d'affectation "tableau" est donc un tableau indicé avec deux éléments ;
Le premier élément contient l'aire et le deuxième la circonférence.
Math.round(expression) : méthode de l'objet Math pour arrondir à l'entier le plus proche.
Précédemment je vous ai montré comment rendre la saisie d'un ou plusieurs argmuents optionnels en proposant pour ces paramètres une valeur par défaut. Mais il y a mieux encore : fonction qui accepte 2 ou 3 ou 4 ou N arguments lors de son appel.
Thème : créer une fonction qui cumule un nombre variable d'entiers : 2 ou 3 ou 4 ou 5 ou N ... Donc le nombre d'arguments à saisir lors de l'appel de la fonction est variable.
function script()
{
function fsomme(...tab)
{
let cumul = 0;
for (let valeur of tab)
{cumul+=valeur ;}
return cumul;
} // fin fsomme
// appels fonction
let cumul1 = fsomme(10,10,30);
let cumul2 = fsomme(1,2,3,4);
let cumul3 = fsomme(1000, 2000);
document.write('
Premier cumul : ', cumul1);
document.write('
Deuxième cumul : ',cumul2);
document.write('
Troisième cumul : ', cumul3);
}
Dans cette fonction, "tab" est un tableau indicé.
Dans la parenthèse ; le nom de l'objet de type 'array' doit être précédé de trois points.
Notez les différents appels de la fonction avec 3 puis 4 et enfin 2 arguments.
Avec la dernière version de ECMAScript, il est possible de définir des fonctions avec une syntaxe très simple :
la déclaration de la fonction tient en une instruction.
Thème : créer une fonction qui fait la sommme de deux nombres et multiplie le tout par un troisième nombre.
function script()
{
let x =10, y = 12, z = 13; w = 14;
// ci-dessous fonction nommmée standard
let standard = function(n1,n2,n3)
{ return (n1 + n2) * n3; };
// fonction anonyme fléchée
let flechee = (n1,n2,n3) => (n1 + n2) * n3;
document.write("
La fonction standard retourne: ", standard(x,y,z));
document.write("
La fonction fléchée retourne : " , flechee(x,y,z));
}
Les fonctions standard & flechee font exactement la même chose.
La première a une syntaxe normale alors que la seconde a un syntaxe simplifiée dite "fléchée".
Dans cette syntaxe simplifiée le mot "function" disparait ; le mot "return" est remplacé par une flèche d'où l'expression
"fonction fléchée".