Syntaxe JavaScript - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

La syntaxe de JavaScript est un ensemble de règles qui définissent ce qui constitue un programme valide en langage JavaScript.

Nuvola apps important.svg Attention : Les exemples présentés dans cet article utilisent souvent une fonction appelée println. Ce terme représente la fonction de sortie standard qui n'existe pas dans la bibliothèque standard de Javascript. Dans un navigateur, ce terme peut être remplacé par document.write.

Origine

Brendan Eich a résumé ainsi le lignage de la syntaxe dans le premier paragraphe JavaScript 1.1 des spécifications : “JavaScript emprunte la plupart de sa syntaxe à Java, mais hérite aussi d'Awk et Perl, avec une influence indirecte de Self pour son système de prototype objet.”

Types de données de base

Nombres

Les nombres en JavaScript sont représentés en binaire comme des IEEE-754 Doubles, ce qui permet une précision de 14 à 15 chiffres significatifs JavaScript FAQ 4.2 (en). Comme ce sont des nombres binaires, ils ne représentent pas toujours exactement les nombres décimaux, en particulier les fractions.

Ceci pose problème quand on formate des nombres pour les afficher car JavaScript n'a pas de méthode native pour le faire. Par exemple:

      alert(0.94 - 0.01); // affiche 0.9299999999999999      

En conséquence, l'arrondi devrait être utilisé dès qu'un nombre est formaté pour l'affichage (en). La méthode toFixed() ne fait pas partie des spécifications de l'ECMAScript et est implémentée différemment selon l'environnement, elle ne peut donc être invoquée.

Les nombres peuvent être spécifiés dans l'une de ces notations :

      345;    // un "entier", bien qu'il n'y ait qu'un seul type numérique en JavaScript      34.5;   // un nombre flottant      3.45e2; // un autre nombre flottant, équivalent à 345      0377;   // un entier octal égal à 255      0xFF;   // un entier hexadecimal égal à 255, les lettres A-F peuvent être en minuscules ou en majuscules      

Dans certaines implémentations de l'ECMAScript comme l'ActionScript, les couleurs sont parfois spécifiées avec des nombres entiers en écriture hexadécimale :

      var colorful = new Color( '_root.shapes' );      colorful.setRGB( 0x003366 );      

Le constructeur Number peut être utilisé pour réaliser une conversion numérique explicite :

      var myString = "123.456"      var myNumber = Number( myString );      

Quand il est utilisé comme un constructeur, un objet wrapper numérique est créé (toutefois il est peu employé) :

      myNumericWrapper = new Number( 123.456 );      

Tableaux

Un tableau est un ensemble d'éléments repérés par leur indice, qui est un nombre entier. En JavaScript, tous les objets peuvent être formés d'un ensemble d'éléments, mais les tableaux sont des objets spéciaux qui disposent de méthodes spécifiques (par exemple, join, slice, et push).

Les tableaux ont une propriété length qui représente la longueur du tableau, c'est-à-dire le nombre d'éléments qu'il peut contenir. La propriété length d'un tableau est toujours supérieure à l'indice maximal utilisé dans ce tableau (N.B. Les indices de tableaux sont numérotés à partir de zéro). Si on crée un élément de tableau avec un indice supérieur à length, length est automatiquement augmentée. Inversement, si on diminue la valeur de length, cela supprime automatiquement les éléments qui ont un indice supérieur ou égal. La propriété length est la seule caractéristique qui distingue les tableaux des autres objets.

Les éléments de tableau peuvent être accédés avec la notation normale d'accès aux propriétés d'objet :

      monTableau[1];      monTableau["1"];      

Les 2 notations ci-dessus sont équivalentes.

Par contre, il n'est pas possible d'utiliser la notation "point" : objet.propriété, ni d'autres représentations du nombre entier de l'indice :

      monTableau.1;       // déclenche une erreur de syntaxe      monTableau["01"];   // n'est pas identique à monTableau[1]      

La déclaration d'un tableau peut se faire littéralement ou par l'utilisation du constructeur Array :

      monTableau = [0,1,,,4,5];             // crée un tableau de longueur 6 avec 4 éléments      monTableau = new Array(0,1,2,3,4,5);  // crée un tableau de longueur 6 avec 6 éléments      monTableau = new Array(365);          // crée un tableau vide de longueur 365      

Les tableaux sont implémentés de façon à ce que seuls les éléments utilisés utilisent de la mémoire ; ce sont des tableaux sporadiques. Si l'on crée un tableau monTableau de longueur 58, puis qu'on attribue monTableau[10] = 'uneValeur' et monTableau[57] = 'uneAutreValeur', l'espace occupé correspondra seulement à ces 2 éléments, comme pour tous les objets. La propriété length du tableau restera quand même à 58.

Grâce à la déclaration littérale, on peut créer des objets similaires aux tableaux associatifs d'autres languages :

      chien = {"couleur":"brun", "taille":"grand"};      chien["couleur"];           // rend la valeur "brun"      

On peut mélanger les déclarations littérales d'objets et de tableaux pour créer facilement des tableaux associatifs, multidimensionnels, ou les deux à la fois :

      chats = [{"couleur":"gris", "taille":"grand"},               {"couleur":"noir", "taille":"petit"}];      chats[0]["taille"];         // rend la valeur "grand"      chiens = {"azor":{"couleur":"brun", "taille":"grand"},                "milou":{"couleur":"blanc", "taille":"petit"}};      chiens["milou"]["taille"];  // rend la valeur "petit"      

Chaînes de caractères

En Javascript la chaîne de caractères est considérée comme une suite de caractères. Une chaîne de caractères en JavaScript peut être directement créée en plaçant des caractères entre quotes (doubles ou simples) :

      var salutation = "Hello, world!";      var salutmartien = 'Bonjour, amis terriens';      

Dans les navigateurs basés sur Mozilla, les caractères d'une chaîne peuvent être accédés individuellement (ils sont considérés comme des chaînes d'un seul caractère) avec la même notation que pour les tableaux :

      var a = salutation[0];        // a vaut 'H' - dans un navigateur basé sur Mozilla seulement      

Dans Internet Explorer, il est nécessaire d'utiliser la méthode charAt() issue de la classe String. C'est la technique recommandée étant donnée qu'elle fonctionne aussi sur les navigateurs issus de Mozilla :

      var a = salutation.charAt(0); // a vaut 'H' - fonctionne avec Internet Explorer                                    //              et avec les navigateurs basés sur Mozilla      

En JavaScript les chaînes sont immuables :

      salutation[0] = "H";      // erreur      

L'opérateur d'égalité == permet de comparer le contenu de deux chaînes de caractères (en tenant compte de la casse), et retourne un booléen :

      var x = "world";      var compare1 = ("Hello, " + x == "Hello, world"); // compare1 vaut true      var compare2 = ("Hello, " + x == "hello, world"); // compare2 vaut false car les                                                        // premiers caractères des arguments                                                        // n'ont pas la même casse      
Page générée en 0.105 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise