Microsoft® JScript™
Fonctions JScript
 Didacticiel JScript 
 Précédent | Suivant 


Qu'est-ce qu'une fonction ?
Les fonctions Microsoft JScript exécutent des actions. Elles peuvent également retourner des résultats qui correspondent parfois à des calculs ou des comparaisons.

Les fonctions regroupent plusieurs opérations sous un même nom pour que vous puissiez rationnaliser votre code. Vous pouvez ainsi écrire un ensemble d'instructions, le nommer, puis l'exécuter quand bon vous semble en l'appelant et en y ajoutant les informations dont il a besoin.

Pour ajouter des informations à une fonction, vous devez les mettre entre parenthèses après le nom de la fonction. Ces informations sont appelées arguments ou paramètres. Certaines fonctions ne prennent pas d'arguments du tout, d'autres en prennent un et d'autres encore en prennent plusieurs. Parfois, le nombre d'arguments requis dépend de l'utilisation de la fonction.

JScript prend en charge deux types de fonctions : des fonctions intégrées au langage et des fonctions créées par l'utilisateur.

Fonctions intégrées spéciales
Le langage JScript contient plusieurs fonctions intégrées dont certaines permettent de gérer des expressions et des caractères spéciaux, et de convertir des chaînes en valeurs numériques.

Ainsi, les fonctions escape() et unescape() servent à convertir, en code HTML, des caractères ayant des significations particulières et des caractères que vous ne pouvez pas intégrer directement au texte. Par exemple, les chevrons "<" et ">" délimitent des balises HTML.

La fonction escape prend comme argument l'un de ces caractères spéciaux et retourne le code d'échappement correspondant à ce caractère. Chaque code d'échappement comporte le symbole du pourcentage (%) suivi de deux nombres. La fonction unescape exécute l'opération inverse. Elle prend comme argument une chaîne constituée d'un symbole du pourcentage et de deux nombres, et retourne un caractère.

La fonction eval() est également très utile car elle permet d'évaluer des expressions mathématiques correctes présentées sous forme de chaînes. Elle prend un seul argument, à savoir l'expression à évaluer.

var UneExpression = "6 * 9 % 7";
var total = eval(UneExpression);        // Attribue la valeur 5 au total de la variable.
var uneautreExpression = "6 * (9 % 7)";
total = eval(uneautreExpression)        // Attribue la valeur 12 au total de la variable.

var total = eval("...entouré d'une multitude de praires.");        // Génère une erreur.
Reportez-vous à Référence du langage pour plus d'informations sur les fonctions intégrées.

Création de fonctions
Vous pouvez créer des fonctions et les utiliser lorsque vous en avez besoin. Une définition de fonction est constituée d'une instruction de fonction et d'un bloc d'instructions JScript.

Dans l'exemple suivant, la fonction TestTriplet prend comme arguments les longueurs des côtés d'un triangle pour déterminer s'il s'agit d'un triangle rectangle en vérifiant que les trois longueurs constituent un triplet Pythagoréen. (Le carré de l'hypoténuse d'un triangle rectangle est égal à la somme des carrés des deux autres côtés.) La fonction TestTriplet fait appel à l'une des deux versions de test explicitées ci-après.

Notez qu'un très petit nombre ("epsilon") est utilisé comme variable de test dans la version en virgule flottante du test. Les calculs en virgule flottante n'étant pas toujours précis et produisant des erreurs d'arrondis, il est difficile de déterminer directement si le carré de l'hypoténuse est égal à la somme des carrés des deux autres côtés sauf s'il est connu que les trois valeurs en question sont des nombres entiers. Un test direct étant plus précis, le code détermine dans cet exemple si ce test est approprié et dans l'affirmative, l'utilise.

var epsilon = 0.0000000000001;  // Le test utilise un nombre très petit.
var triplet = false;

function TestEntier(a, b, c)  {  // Fonction de test pour des nombres entiers
    if ( (a*a) == ((b*b) + (c*c)) )  {  // Test lui-même
    triplet = true;
    }
}  // Fin de la fonction de vérification de nombres entiers

function TestFlottant(a, b, c)  {  // Fonction de test pour des nombres en virgule flottante
var leTest = ((a*a) - ((b*b) + (c*c)))  // Calcul du test
    if (leTest < 0)  {  // Le test requiert la valeur absolue et inverse la fonction leTest si cette valeur est négative.
    leTest *= -1;
    }
    if (epsilon > leTest)  {  // Valeur la plus proche
    triplet = true;
    }
}  // Fin de la fonction de vérification de nombres en virgule flottante


function TestTriplet(a, b, c)  {  // Vérification du triplet. Tout d'abord, le côté le plus long est déplacé en "a".
var d = 0;  // Création d'une corbeille d'enregistrement temporaire.
    if (c > b)  {  // Si c > b, ces deux éléments sont permutés.
    d = c;
    c = b;
    b = d;
    }  // Sinon, ils sont ignorés.
    if (b > a)  {  // Si b > a, ces deux éléments sont permutés.
    d = b;
    b = a;
    a = d;
    }  // Sinon, ils sont ignorés.

// Le côté "a" correspond à présent à l'hypoténuse (le cas échéant).

    if (((a%1) == 0) && ((b%1) == 0) && ((c%1) == 0))  {  // Teste les 3 valeurs. Sont-elles des nombres entiers ?
    TestEntier(a, b, c);  // Dans l'affirmative, utiliser le test direct.
    }
    else
        TestFlottant(a, b, c);  // Sinon, essayer de se rapprocher le plus possible de la valeur.
}  // Fin de la fonction de vérification de triplet.


// Les trois instructions suivantes attribuent des valeurs échantillon pour le test.
var CoteA = 5;
var CoteB = 5;
var CoteC = Math.sqrt(50);

TestTriplet(CoteA, CoteB, CoteC);  // Appel de la fonction. Une fois la fonction appelée, le triplet contient le résultat.

© 1998 Microsoft Corporation. Tous droits réservés.