Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.

JavaScript(un dialecte d'ECMAScript) est un niveau élevé, dynamique, multi-paradigme, orienté objet, basé sur des prototypes, langage faiblement typé et interprété traditionnellement utilisé pour les scripts côté client dans les navigateurs Web. JavaScript peut également être exécuté en dehors du navigateur avec l'utilisation d'un framework tel que Node.js, Nashorn, Wakanda ou Google Apps Script. Malgré son nom, il n'est pas lié au langage de programmation Javaet ne partage que des similitudes superficielles.

Remarque: à moins qu'une balise pour un framework ou une bibliothèque ne soit également incluse, une réponse purement JavaScript est attendue pour les questions avec la balise javascript.

JavaScript fonctionne sur presque tous les systèmes d'exploitation, et un moteur est inclus dans les navigateurs Web traditionnels. Développé en 1995 par Brendan Eichà Netscape Communications, il s'appelait à l'origine LiveScriptmais a été renommé en JavaScript en raison de la relation amicale de Netscape avec Sun Microsystems(créateurs de Java) à l'époque.

Des moteurs ou interprètes JavaScript autonomes sont également disponibles, notamment:

  • Spidermonkey de Mozilla, le premier moteur JavaScript jamais écrit, actuellement utilisé dans Mozilla Firefox.
  • Le moteur JavaScript de Google, Chrome V8, utilisé dans Google Chrome et Chromium.
  • Google Apps Script, un interpréteur basé sur le cloud / côté serveur qui fournit un contrôle programmatique "macro" des services et des documents Google Apps.
  • Node.js, construit sur V8, une plate-forme qui permet d'écrire des applications côté serveur en JavaScript.
  • Windows inclut JScript, une variante JavaScript dans Windows Script Host.
  • Chakra, un fork de JScript, est développé par Microsoft et utilisé dans Edge.
  • Mozilla propose également Rhino, l'implémentation de Java intégré à JavaScript, généralement intégré aux applications Java pour fournir des scripts aux utilisateurs finaux.
  • WebKit (sauf pour le projet Chromium) implémente le moteur JavaScriptCore.
  • ActionScript (dérivé à l'origine de HyperTalk) est désormais un dialecte ECMAScript et utilise de nombreuses API ECMAScript.
  • Duktape Embeddable, un moteur ECMAScript portable en C avec une petite empreinte mémoire.
  • Wakanda, une infrastructure, un IDE et un serveur basés sur la V8 prenant en charge JavaScript côté serveur
  • Meteor: une application Meteor est un mélange de JavaScript côté client qui s'exécute à l'intérieur d'un navigateur Web ou d'une application mobile PhoneGap, de JavaScript côté serveur qui s'exécute sur le serveur Meteor à l'intérieur d'un conteneur Node.js. (selon la documentation MeteorJS)
  • Nashorn, un moteur JavaScript développé dans le langage de programmation Java, basé sur la machine Da Vinci (JSR 292)

Le Mozilla Developer Networkcontient documentation sur JavaScript.

JavaScript est généralement utilisé pour manipuler le modèle d'objet de document(DOM) et Feuilles de style en cascade(CSS) dans le navigateur. Cela permet l'écriture de scripts d'interface utilisateur, l'animation, l'automatisation, la validation côté client et bien plus encore.

Avec l'émergence récente de plates-formes telles que Node.js, JavaScript peut désormais être utilisé pour écrire des applications côté serveur. En outre, il est également utilisé dans des environnements qui ne sont pas basés sur le Web, comme les documents PDF, les navigateurs spécifiques au site, widgets de bureau, etc.

Nomenclature

Bien qu'il ait été développé sous le nom de Mocha, le langage s'appelait officiellement LiveScript lors de sa première livraison dans les versions bêta de Netscape Navigator 2.0 en septembre 1995, mais il a été renommé JavaScript lors de son déploiement dans la version 2.0B3 du navigateur Netscape.

Le changement de nom de LiveScript en JavaScript a à peu près coïncidé avec l'ajout de la prise en charge de la technologie Java par Netscape dans son navigateur Web Netscape Navigator. Le choix final du nom a semé la confusion, donnant l'impression que le langage était un spin-off du langage de programmation Java, et le choix a été caractérisé comme un stratagème de marketing par Netscape pour donner à JavaScript le cachet de ce qui était alors le nouveau langage de programmation Web.

Les gens utilisent souvent le terme JavaScript de manière informelle. La langue et le terme proviennent de Netscape. ECMAScript, JavaScript et JScript sont des termes faciles à confondre.

ECMAScripta été développé en tant que standardisation du JavaScriptet le JScriptdéveloppé par Microsoft de manière indépendante. La référence canonique est la Spécification de langue ECMAScript® 2015. Bien que JavaScript et JScript visent à être compatibles avec ECMAScript, ils fournissent également des fonctionnalités supplémentaires (et d'autres écarts) non décrit dans les spécifications ECMA. D'autres implémentationsd'ECMAScript existent également.

Les différences aujourd'hui pour ceux qui utilisent JavaScript sont négligeables; les gens ne distinguent généralement pas les variantes JavaScript et JScript d'ECMAScript.

Versions ECMAScript

La plupart des navigateurs modernes implémentent JavaScript sur la base de la spécification ECMAScript 6, bien que certains ne parviennent pas à implémenter certaines fonctionnalités ES6. Cependant, les anciens navigateurs tels qu'Internet Explorer 8 implémentent la spécification ECMAScript 3, qui ne contient pas de fonctions telles que Function.prototype.bind, et même JSON.parse, entre autres. Pour voir la prise en charge actuelle des fonctionnalités ES6 par le navigateur, voir https://caniuse.com/#search=es6.

La version actuelle d'ECMAScript est ECMAScript 10, connue sous le nom d'ECMAScript 2019, qui a été finalisée en juin 2019.


Lorsque vous posez une question JavaScript, vous devez:

  1. Déboguez votre code JavaScript (voir Creativebloq, MDN, Google < / a>, & MSDN).
  2. Isolez le code problématique et reproduisez-le dans un extrait de code de dépassement de pileou un environnement en ligne externe tel que JSFiddle, JS Binou PasteBin(n'oubliez pas d'inclure également le code dans la question elle-même).
  3. Si une bibliothèque ou un framework est utilisé, balisez la question avec les balises appropriées: jquerypour jQuery, prototypejspour Prototype, mootoolspour MooTools, etc. Cependant, si un framework n'est pas utilisé ou nécessaire, n'incluez pas ces balises.
  4. Si le problème est côté client, mentionnez sur quel navigateur le code rencontre des problèmes et quels messages d'erreur, le cas échéant, ont été lancés par le navigateur. Utilisez les outils de développement de votre navigateur (voir «Outils utiles» ci-dessous) pour voir ces messages. Si la question est spécifique au navigateur, utilisez les balises firefox, google-chrome, internet-explorer, opera, safari, microsoft-edge, opera-minietc.
  5. Ne balisez la question en tant que cssou htmlque si vous posez des questions sur un problème concernant la combinaison de l'un de ceux avec JavaScript et ne pouvait être répondu avec des informations spécifiques à l'un ou l'autre de ces sujets.

Apprendre JavaScript

Sécurité

JavaScript et le DOM permettent aux auteurs malveillants de livrer des scripts à exécuter sur un ordinateur client via le Web. Les auteurs de navigateurs contiennent ce risque en utilisant deux restrictions. Tout d'abord, les scripts s'exécutent dans un bac à sable dans lequel ils ne peuvent effectuer que des actions liées au Web, pas des tâches de programmation à usage général comme la création de fichiers. Deuxièmement, les scripts sont limités par la même politique d'origine: les scripts d'un site Web n'ont pas accès aux informations telles que les noms d'utilisateur, les mots de passe ou les cookies envoyés à un autre site. La plupart des bogues de sécurité liés à JavaScript sont des violations de la même politique d'origine ou du bac à sable.

La politique de sécurité du contenu est la principale méthode prévue pour garantir que seul le code approuvé est exécuté sur une page Web.

XSS est un type fréquent de tentative de vol de données ou de dommage à un site Web via JavaScript.

Outils utiles

Apprentissage JavaScript interactif

  • Codecademy | JavaScript: découvrez les principes fondamentaux de JavaScript et de la programmation dynamique.
  • Udacity | Langages de programmation: les concepts clés incluent la spécification et le traitement de chaînes, phrases et structures de programme valides.
  • École de code: découvrez les principes fondamentaux de JavaScript et de la programmation dynamique.
  • Khan Academy: mieux vaut en savoir plus sur les animations.
  • Codewars: découvrez des modèles et formez-vous sur les quiz publiés par les membres de la communauté

Sagesse du débordement de pile

Liens utiles

Livres de programmation JavaScript gratuits

Vidéos


Exemple de code JavaScript

Ce script affiche "Hello World" sur votre écran.

window.onload = function() {
   alert('Hello World!');
};

Démo!


Questions fréquemment posées

Trouvez ci-dessous quelques réponses à certaines des questions les plus fréquemment posées sur JavaScript et les technologies associées.

Q: J'ai cette structure JSON, comment puis-je accéder à la propriété x.y.z?
A: Comment puis-je accéder et traiter les imbriqués objets, tableaux ou JSON?

Q: J'ajoute des événements dans une boucle for mais tous les gestionnaires font la même chose, pourquoi?
R: Fermeture JavaScript à l'intérieur des boucles - exemple pratique simple

Q: Je veux comparer quelque chose à plusieurs valeurs, existe-t-il un moyen facile de le faire?
R: Méthode concise de comparaison avec plusieurs valeurs

Q: Comment configurer l'héritage approprié?
A: Les objets n'héritent pas fonctions prototypées

Q: Comment fonctionnent les fermetures JavaScript?
A: Comment fonctionnent les fermetures JavaScript?

Q: Pourquoi setTimeout() dans une boucle for utilise-t-il toujours la dernière valeur?
A: setTimeout dans for -loop n'imprime pas de valeurs consécutives

Q: Comment renvoyer la réponse d'un appel AJAX à partir d'une fonction?
A: Comment renvoyer la réponse d'un appel asynchrone?

Q: Pourquoi mes gestionnaires connectés en boucle ne fonctionnent-ils pas correctement et que puis-je faire?
R: Javascript: générer dynamiquement un gestionnaire

Q: Comment puis-je obtenir des valeurs de chaîne de requête?
R: Comment puis-je obtenir des valeurs de chaîne de requête en JavaScript?

Q: Que fait use strict en JavaScript?
R: Que fait" use strict "en JavaScript, et quel est le raisonnement derrière cela?

Q: Comment créer une page de redirection dans jQuery / JavaScript?
R: Comment puis-je rediriger vers une autre page Web?

Q: Comment trier un tableau d'objets par valeur de propriété?
A: Trier le tableau des objets par valeur de propriété de chaîne

Q: À partir d'un tableau d'objets, comment extraire la valeur d'une propriété sous forme de tableau? A: À partir d'un tableau d'objets, extraire la valeur d'une propriété sous forme de tableau

Q: J'ajoute des éléments avec JavaScript ou jQuery ultérieurement et j'ajoute des événements mais ils ne se déclenchent pas, pourquoi?
R: Vous voudrez peut-être délégation d'événement.

Q: Comment puis-je conserver uniquement les éléments d'un tableau qui correspondent à une certaine condition?
R: Comment puis-je conserver uniquement les éléments d'un tableau qui correspondent à une certaine condition?

Q: Comment puis-je déboguer mon code JavaScript?
A: Comment Je débogue mon code JavaScript?

Q: Que signifie ce symbole en JavaScript?
A: Que signifie ce symbole signifie en JavaScript?

Plus d'information

Tchat