La syntaxe de JavaScript est un ensemble de règles qui définissent ce qui constitue un programme valide en langage JavaScript.
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
.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.”
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 );
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 :
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 :
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