Une fonction est un bloc d'instructions avec une liste de paramètres (éventuellement vide). Elle possède généralement un nom et peut renvoyer une valeur.
function nom-fonction(argument1, argument2, argument3) { instructions; return expression; }
Syntaxe pour l'appel d'une fonction anonyme, c'est-à-dire sans nom :
var fn = function(arg1, arg2) { instructions; return expression; };
Exemple de fonction : l'algorithme d'Euclide. Il permet de trouver le plus grand commun diviseur de deux nombres, à l'aide d'une solution géométrique qui soustrait le segment le plus court du plus long :
function gcd(segmentA, segmentB) { while (segmentA != segmentB) { if (segmentA > segmentB) segmentA -= segmentB; else segmentB -= segmentA; } return segmentA; } println(gcd(60, 40)); // imprime 20
undefined
arguments
. Cet objet donne accès à tous les paramètres en utilisant un indice : arguments[0], arguments[1], ... arguments[n]
, y compris ceux qui sont au-delà des paramètres nommés. Attention, arguments
n'est pas un tableau. Il a une propriété length mais il n'a pas les méthodes des tableaux comme slice, sort, etc.var Objet1 = {a:1} var Objet2 = {b:2} function bizarre(p) { p = Objet2; // on ignore la valeur reçue dans le paramètre p p.b = arguments[1] // on remplit Objet2.b avec la valeur du 2ème paramètre reçu } bizarre(Objet1, 3) // Objet1 est ignoré, 3 est un paramètre additionnel println(Objet1.a + " " + Objet2.b); // imprime 1 3
On peut déclarer une fonction à l'intérieur d'une autre. La fonction ainsi créée pourra accéder aux variables locales de la fonction dans laquelle elle a été définie. Elle se souviendra de ces variables, même après qu'on soit sorti de la fonction dans laquelle elle a été définie, ce qui constitue une fermeture.
Javascript est sensible à la casse.
L'usage est de donner aux objets un nom qui commence par une majuscule et de donner aux fonctions ou variables un nom qui commence par une minuscule.
Dans le langage Javascript les instructions se terminent par un point-virgule.
Cependant Javascript comporte un mécanisme d'insertion automatique de point-virgule : lors de l'analyse d'une ligne de code qui ne se termine pas par un point-virgule, si le contenu de la ligne correspond à une instruction correcte, la ligne peut être traitée comme si elle se terminait par un point-virgule.
Les caractères espace, tabulation, fin de ligne et leurs variantes, quand ils ne sont pas inclus dans une chaîne de caractères, sont désignés sous le terme général whitespace. Les caractères whitespace peuvent avoir un effet sur le code à cause du mécanisme d'insertion automatique de point-virgule.
Pour éviter les effets non désirés dus au mécanisme d'insertion automatique de point-virgule, il est conseillé d'ajouter systématiquement un point-virgule à la fin de chaque instruction, même si cela diminue la lisibilité du code.
Exemple d'effet non désiré :
return a + b; // ces 2 lignes renvoient undefined car elles sont traitées comme: // return; // a + b;
Autre exemple :
a = b + c (d + e).fonc() // pas de point-virgule ajouté, les lignes sont traitées comme: // a = b + c(d + e).fonc()
D'autre part, les caractères whitespace accroissent inutilement la taille du programme et donc du fichier .js. La solution la plus simple à ce problème est de faire comprimer les fichiers par le serveur, ce qui réduira la taille de tous les fichiers source téléchargés sur le serveur. La compression en zip fonctionne mieux que les logiciels spécialisés en suppression de whitespace (whitespace parser).
La syntaxe des commentaires est la même qu'en C++.
// commentaire /* commentaire multiligne */
Il est interdit d'imbriquer les commentaires :
/* cette syntaxe /* est interdite */ */