{"parse":{"title":"JavaScript","pageid":2228,"revid":137165,"text":{"*":"<div class=\"mw-content-ltr mw-parser-output\" lang=\"fr\" dir=\"ltr\"><table cellspacing=\"8\" style=\"width: 272px; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 5px; float: right; clear: right; text-align:left;\">\n    <tbody><tr>\n      <th style=\"text-align:center; margin:10px auto; background-color:#ccccff; border:1px solid rgb(190, 190,240);padding:8px;\" colspan=\"2\">\n\t<big><a href=\"/fr/Initiation_%C3%A0_la_pens%C3%A9e_computationnelle_avec_JavaScript\" title=\"Initiation \u00e0 la pens\u00e9e computationnelle avec JavaScript\">Initiation \u00e0 la pens\u00e9e computationnelle avec JavaScript</a></big></th> \n    </tr>\n   <tr>\n      <th style=\"text-align:center; margin:10px auto; background-color:rgb(225,235,255);border:1px solid rgb(210, 210,245);padding:8px;\" colspan=\"2\">Module: <a href=\"/fr/Concepts_de_base_de_JavaScript\" title=\"Concepts de base de JavaScript\">Concepts de base de JavaScript</a>    <span style=\"font-size:20px;font-weight:600\"><a href=\"/fr/JavaScript_dans_le_navigateur\" title=\"JavaScript dans le navigateur\">\u25ac\u25b6</a></span></th>\n    </tr>\n   \n    \n    <tr>\n      <th colspan=\"2\" style=\"margin-bottom:10px;\"><span style=\"float:left;font-size:30px;font-weight:900;margin-bottom:10px\"><a href=\"/fr/Concepts_de_base_de_JavaScript\" title=\"Concepts de base de JavaScript\">\u25c0\u25ac</a></span><span style=\"float:right;font-size:30px;font-weight:900;margin-bottom:10px\"><a href=\"/fr/Premiers_pas_avec_JavaScript\" title=\"Premiers pas avec JavaScript\">\u25ac\u25b6</a></span></th>\n    </tr>\n    <tr>\n      <td><span style=\"font-size:20px;font-weight:900;background-color:green\">\u2690</span> \u00e0 finaliser</td>\n      <td><span style=\"font-size:20px;font-weight:900;\">\u2638</span> </td>\n    </tr>\n<tr><td><span style=\"font-size:20px;font-weight:900;\">\u2692</span> 2020/09/26</td>\n        <td></td>\n    </tr>\n  \n    \n    \n    \n    \n    \n   <tr><td style=\"text-align:left; margin:10px auto; background-color:rgb(225,235,255);border:1px solid rgb(210, 210,245);padding:8px;\" colspan=\"2\"><a href=\"/fr/Cat%C3%A9gorie:JavaScript\" title=\"Cat\u00e9gorie:JavaScript\">Cat\u00e9gorie: JavaScript</a></td></tr>\n  </tbody></table>\n<div id=\"toc\" class=\"toc\" role=\"navigation\" aria-labelledby=\"mw-toc-heading\"><input type=\"checkbox\" role=\"button\" id=\"toctogglecheckbox\" class=\"toctogglecheckbox\" style=\"display:none\" /><div class=\"toctitle\" lang=\"fr\" dir=\"ltr\"><h2 id=\"mw-toc-heading\">Sommaire</h2><span class=\"toctogglespan\"><label class=\"toctogglelabel\" for=\"toctogglecheckbox\"></label></span></div>\n<ul>\n<li class=\"toclevel-1 tocsection-1\"><a href=\"#Introduction\"><span class=\"tocnumber\">1</span> <span class=\"toctext\">Introduction</span></a>\n<ul>\n<li class=\"toclevel-2 tocsection-2\"><a href=\"#D\u00e9finition_formelle\"><span class=\"tocnumber\">1.1</span> <span class=\"toctext\">D\u00e9finition formelle</span></a></li>\n<li class=\"toclevel-2 tocsection-3\"><a href=\"#D\u00e9finition_informelle\"><span class=\"tocnumber\">1.2</span> <span class=\"toctext\">D\u00e9finition informelle</span></a></li>\n<li class=\"toclevel-2 tocsection-4\"><a href=\"#Histoire_de_JavaScript\"><span class=\"tocnumber\">1.3</span> <span class=\"toctext\">Histoire de JavaScript</span></a></li>\n<li class=\"toclevel-2 tocsection-5\"><a href=\"#Versions_de_JavaScript\"><span class=\"tocnumber\">1.4</span> <span class=\"toctext\">Versions de JavaScript</span></a></li>\n</ul>\n</li>\n<li class=\"toclevel-1 tocsection-6\"><a href=\"#Comprendre_JavaScript\"><span class=\"tocnumber\">2</span> <span class=\"toctext\">Comprendre JavaScript</span></a>\n<ul>\n<li class=\"toclevel-2 tocsection-7\"><a href=\"#Les_fondamentaux_du_langage\"><span class=\"tocnumber\">2.1</span> <span class=\"toctext\">Les fondamentaux du langage</span></a></li>\n<li class=\"toclevel-2 tocsection-8\"><a href=\"#L\u2019environnement\"><span class=\"tocnumber\">2.2</span> <span class=\"toctext\">L\u2019environnement</span></a>\n<ul>\n<li class=\"toclevel-3 tocsection-9\"><a href=\"#JavaScript_\u00ab_c\u00f4t\u00e9-client_\u00bb\"><span class=\"tocnumber\">2.2.1</span> <span class=\"toctext\">JavaScript \u00ab&#160;c\u00f4t\u00e9-client&#160;\u00bb</span></a></li>\n<li class=\"toclevel-3 tocsection-10\"><a href=\"#JavaScript_\u00ab_c\u00f4t\u00e9-serveur_\u00bb\"><span class=\"tocnumber\">2.2.2</span> <span class=\"toctext\">JavaScript \u00ab&#160;c\u00f4t\u00e9-serveur&#160;\u00bb</span></a></li>\n<li class=\"toclevel-3 tocsection-11\"><a href=\"#Autres_environnements\"><span class=\"tocnumber\">2.2.3</span> <span class=\"toctext\">Autres environnements</span></a></li>\n</ul>\n</li>\n<li class=\"toclevel-2 tocsection-12\"><a href=\"#Le_code_source\"><span class=\"tocnumber\">2.3</span> <span class=\"toctext\">Le code source</span></a></li>\n</ul>\n</li>\n<li class=\"toclevel-1 tocsection-13\"><a href=\"#Cadre_d\u2019utilisation_de_JavaScript\"><span class=\"tocnumber\">3</span> <span class=\"toctext\">Cadre d\u2019utilisation de JavaScript</span></a>\n<ul>\n<li class=\"toclevel-2 tocsection-14\"><a href=\"#JavaScript_:_utilisation_de_base_avec_HTML\"><span class=\"tocnumber\">3.1</span> <span class=\"toctext\">JavaScript&#160;: utilisation de base avec HTML</span></a></li>\n<li class=\"toclevel-2 tocsection-15\"><a href=\"#JavaScript_et_HTML5_:_utilisation_avanc\u00e9e\"><span class=\"tocnumber\">3.2</span> <span class=\"toctext\">JavaScript et HTML5&#160;: utilisation avanc\u00e9e</span></a></li>\n<li class=\"toclevel-2 tocsection-16\"><a href=\"#Biblioth\u00e8ques_JavaScript\"><span class=\"tocnumber\">3.3</span> <span class=\"toctext\">Biblioth\u00e8ques JavaScript</span></a></li>\n<li class=\"toclevel-2 tocsection-17\"><a href=\"#JavaScript_Object_Notation_(JSON)\"><span class=\"tocnumber\">3.4</span> <span class=\"toctext\">JavaScript Object Notation (JSON)</span></a></li>\n<li class=\"toclevel-2 tocsection-18\"><a href=\"#Node.js_:_JavaScript_server-side_et_dans_d&#39;autres_contextes\"><span class=\"tocnumber\">3.5</span> <span class=\"toctext\">Node.js&#160;: JavaScript server-side et dans d'autres contextes</span></a></li>\n<li class=\"toclevel-2 tocsection-19\"><a href=\"#JavaScript_en_Data_Science\"><span class=\"tocnumber\">3.6</span> <span class=\"toctext\">JavaScript en <i>Data Science</i></span></a></li>\n<li class=\"toclevel-2 tocsection-20\"><a href=\"#JavaScript_dans_d&#39;autres_logiciels\"><span class=\"tocnumber\">3.7</span> <span class=\"toctext\">JavaScript dans d'autres logiciels</span></a></li>\n<li class=\"toclevel-2 tocsection-21\"><a href=\"#JavaScript_et_les_bases_de_donn\u00e9es\"><span class=\"tocnumber\">3.8</span> <span class=\"toctext\">JavaScript et les bases de donn\u00e9es</span></a></li>\n</ul>\n</li>\n<li class=\"toclevel-1 tocsection-22\"><a href=\"#Avantages_de_JavaScript\"><span class=\"tocnumber\">4</span> <span class=\"toctext\">Avantages de JavaScript</span></a></li>\n<li class=\"toclevel-1 tocsection-23\"><a href=\"#D\u00e9savantages_de_JavaScript\"><span class=\"tocnumber\">5</span> <span class=\"toctext\">D\u00e9savantages de JavaScript</span></a></li>\n<li class=\"toclevel-1 tocsection-24\"><a href=\"#Bibliographie\"><span class=\"tocnumber\">6</span> <span class=\"toctext\">Bibliographie</span></a></li>\n</ul>\n</div>\n\n<h2><span class=\"mw-headline\" id=\"Introduction\">Introduction</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=1\" title=\"Modifier la section\u202f: Introduction\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=1\" title=\"Modifier le code source de la section : Introduction\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h2>\n<figure typeof=\"mw:File/Thumb\"><a href=\"/fr/Fichier:Unofficial_JavaScript_logo.svg\" class=\"mw-file-description\"><img src=\"/fmediawiki/images/thumb/c/ce/Unofficial_JavaScript_logo.svg/200px-Unofficial_JavaScript_logo.svg.png\" decoding=\"async\" width=\"200\" height=\"200\" class=\"mw-file-element\" srcset=\"/fmediawiki/images/thumb/c/ce/Unofficial_JavaScript_logo.svg/300px-Unofficial_JavaScript_logo.svg.png 1.5x, /fmediawiki/images/thumb/c/ce/Unofficial_JavaScript_logo.svg/400px-Unofficial_JavaScript_logo.svg.png 2x\" /></a><figcaption>Logo non officiel de JavaScript</figcaption></figure>\n<p>JavaScript, souvent abr\u00e9g\u00e9 en JS, est un <a href=\"/fr/Langage_de_script\" title=\"Langage de script\">langage de script</a> tr\u00e8s utilis\u00e9, surtout au niveau des pages/applications web. Cette page propose une description des diff\u00e9rents aspects de JavaScript d\u2019un point de vue plut\u00f4t th\u00e9orique et conceptuel, sans entrer dans les d\u00e9tails du codage. Pour une approche plus concr\u00e8te, bas\u00e9e directement sur les caract\u00e9ristiques du langage, voir&#160;:\n</p>\n<ul><li><a href=\"/fr/Tutoriel_JavaScript_de_base\" title=\"Tutoriel JavaScript de base\">Tutoriel JavaScript de base</a> pour un aper\u00e7u global de la syntaxe&#160;;</li>\n<li><a href=\"/fr/Computation_avec_JavaScript\" title=\"Computation avec JavaScript\">Computation avec JavaScript</a> pour l'explication d'exemples sur le fonctionnement du langage&#160;;</li>\n<li><a href=\"/fr/Tutoriel_JavaScript_c%C3%B4t%C3%A9_client\" title=\"Tutoriel JavaScript c\u00f4t\u00e9 client\">Tutoriel JavaScript c\u00f4t\u00e9 client</a> pour l'utilisation de JavaScript dans les pages web&#160;;</li>\n<li><a href=\"/fr/Interactivit%C3%A9_avec_JavaScript\" title=\"Interactivit\u00e9 avec JavaScript\">Interactivit\u00e9 avec JavaScript</a> pour l'explication d'exemples d'applications/pages web.</li></ul>\n<p>Pour d'autres ressources plus en g\u00e9n\u00e9ral&#160;:\n</p>\n<ul><li><a href=\"/fr/Initiation_%C3%A0_la_pens%C3%A9e_computationnelle_avec_JavaScript\" title=\"Initiation \u00e0 la pens\u00e9e computationnelle avec JavaScript\">Initiation \u00e0 la pens\u00e9e computationnelle avec JavaScript</a></li>\n<li><a href=\"/fr/Review_de_ressources_pour_d%C3%A9buter_JavaScript\" title=\"Review de ressources pour d\u00e9buter JavaScript\">Review de ressources pour d\u00e9buter JavaScript</a> pour une liste faite principalement par les \u00e9tudiants du cours <a href=\"/fr/STIC_I\" class=\"mw-redirect\" title=\"STIC I\">STIC I</a></li>\n<li><a href=\"/fr/Liens_JavaScript\" title=\"Liens JavaScript\">Liens JavaScript</a></li>\n<li>Les autres pages de la <a href=\"/fr/Cat%C3%A9gorie:JavaScript\" title=\"Cat\u00e9gorie:JavaScript\">cat\u00e9gorie JavaScript</a></li></ul>\n<h3><span class=\"mw-headline\" id=\"D\u00e9finition_formelle\">D\u00e9finition formelle</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=2\" title=\"Modifier la section\u202f: D\u00e9finition formelle\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=2\" title=\"Modifier le code source de la section : D\u00e9finition formelle\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>\u00ab&#160;JavaScript est un langage de script, multi-plateforme et orient\u00e9 objet&#160;\u00bb (<a rel=\"nofollow\" class=\"external text\" href=\"https://developer.mozilla.org/fr/docs/Web/JavaScript\">Mozilla Developer Network</a>, 2015). Cette br\u00e8ve d\u00e9finition, qui ne sera pas tr\u00e8s explicative pour un n\u00e9ophyte, permet par contre de synth\u00e9tiser les points forts d\u2019un langage souvent sous-estim\u00e9, mal compris et surtout mal utilis\u00e9 (Crockford, 2008; Simpson, 2015). Longtemps consid\u00e9r\u00e9 comme un pseudo-langage dont l\u2019utilit\u00e9 \u00e9tait limit\u00e9e \u00e0 quelques fonctionnalit\u00e9s de base pour les pages web (surtout pour les formulaires web), JavaScript est en r\u00e9alit\u00e9 un langage tr\u00e8s puissant, avec un cadre d\u2019utilisation tr\u00e8s large.\n</p>\n<h3><span class=\"mw-headline\" id=\"D\u00e9finition_informelle\">D\u00e9finition informelle</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=3\" title=\"Modifier la section\u202f: D\u00e9finition informelle\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=3\" title=\"Modifier le code source de la section : D\u00e9finition informelle\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>Dans la plupart des cas, lorsqu'on se r\u00e9f\u00e8re \u00e0 JavaScript, on consid\u00e8re ce qu'il faudrait plus correctement appeler <b>JavaScript c\u00f4t\u00e9 client</b>, ou, de mani\u00e8re encore plus pr\u00e9cise, <b>JavaScript plus les Web (ou Browser) API</b> (acronyme d'<i>Application Programming Interface</i> en anglais). En effet, la plupart des personnes - d\u00e9veloppeurs et non - qui s'approchent \u00e0 JavaScript le font \u00e0 travers l'ajoute de comportements dynamiques ou interactifs \u00e0 une page web. Concr\u00e8tement, ceci se traduit par la possibilit\u00e9 de modifier les pages web une fois qu'elles ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9es dans le navigateur de l'utilisateur.\n</p><p>Depuis quelques ann\u00e9es, cependant, JavaScript est utilis\u00e9 \u00e9galement dans d'autres contextes, par exemple dans le d\u00e9veloppement c\u00f4t\u00e9 serveur avec <a href=\"/fr/Node.js\" title=\"Node.js\">Node.js</a>, dans les <a href=\"/fr/Internet_des_objets_avec_JavaScript\" title=\"Internet des objets avec JavaScript\">objets connect\u00e9s</a>, ou dans le <a href=\"/fr/Electron\" title=\"Electron\">d\u00e9veloppement de logiciels desktop</a>. Cet article illustre bri\u00e8vement les principaux cadres d'utilisation.\n</p>\n<h3><span class=\"mw-headline\" id=\"Histoire_de_JavaScript\">Histoire de JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=4\" title=\"Modifier la section\u202f: Histoire de JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=4\" title=\"Modifier le code source de la section : Histoire de JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>JavaScript a \u00e9t\u00e9 cr\u00e9\u00e9 en 1995 par <a rel=\"nofollow\" class=\"external text\" href=\"https://fr.wikipedia.org/wiki/Brendan_Eich\">Brendan Eich</a> qui travaillait \u00e0 l\u2019\u00e9poque pour Netscape. Le langage (\u00e9galement connu au d\u00e9but avec les noms de Mocha ou LiveScript) a ensuite int\u00e9gr\u00e9 les standards <a rel=\"nofollow\" class=\"external text\" href=\"https://www.ecma-international.org\">ECMA</a> pour favoriser la diffusion et l'utilisation. Formellement, donc, le nom du langage est <a rel=\"nofollow\" class=\"external text\" href=\"https://www.ecma-international.org/memento/TC39.htm\">ECMAScript</a> et ses sp\u00e9cifications sont \u00e9tablies par le groupe TC39. Ce groupe s'occupe de d\u00e9finir les propri\u00e9t\u00e9s d'un langage de scripting, et JavaScript est un langage qui impl\u00e9mente ces propri\u00e9t\u00e9s.\n</p><p>Dans la plupart des cas, cependant, on ne fait pas cette distinction technique et on utilise tout simplement le terme JavaScript de mani\u00e8re omnicompr\u00e9hensive. Ce nom cr\u00e9e parfois de la confusion avec un autre langage de programmation tr\u00e8s connu&#160;: <a href=\"/fr/Java\" title=\"Java\">Java</a>. Toutefois, malgr\u00e9 le fait que les deux langages partagent certaines similitudes, JavaScript et Java sont deux langages diff\u00e9rents&#160;!\n</p><p>L\u2019histoire de JavaScript est longue et compliqu\u00e9e (voir <a rel=\"nofollow\" class=\"external text\" href=\"https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript\">une br\u00e8ve histoire sur le site W3C</a>). De mani\u00e8re tr\u00e8s sch\u00e9matique, on peut s\u00e9parer l\u2019histoire de JavaScript en deux p\u00e9riodes&#160;:\n</p>\n<ol><li>Avant le <a href=\"/fr/Web_2.0\" title=\"Web 2.0\">Web 2.0</a>&#160;: langage peu et mal utilis\u00e9, consid\u00e9r\u00e9 comme un pseudo-langage \u00e0 \u00e9viter pour les d\u00e9veloppeurs \u00ab&#160;s\u00e9rieux&#160;\u00bb&#160;;</li>\n<li>Apr\u00e8s le <a href=\"/fr/Web_2.0\" title=\"Web 2.0\">Web 2.0</a>&#160;: boom du langage qui est utilis\u00e9 pour ajouter des fonctionnalit\u00e9s interactives aux pages web, gr\u00e2ce notamment \u00e0 son int\u00e9gration avec <a href=\"/fr/HTML5\" title=\"HTML5\">HTML5</a>.</li></ol>\n<p>Depuis 2010-2015, il y a \u00e9galement une tendance pour utiliser JavaScript en dehors des pages web, notamment dans le d\u00e9veloppement c\u00f4t\u00e9-serveur ou dans le d\u00e9veloppement d\u2019application desktop et mobile. Cette tendance est bien synth\u00e9tis\u00e9e par la <a rel=\"nofollow\" class=\"external text\" href=\"https://blog.codinghorror.com/the-principle-of-least-power/\">loi de Atwood</a>: <span style=\"background-color:#eeeeee\" class=\"citation\">\u00ab&#160;any application that can be written in JavaScript, will eventually be written in JavaScript&#160;\u00bb</span>.\n</p>\n<h3><span class=\"mw-headline\" id=\"Versions_de_JavaScript\">Versions de JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=5\" title=\"Modifier la section\u202f: Versions de JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=5\" title=\"Modifier le code source de la section : Versions de JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>L'histoire compliqu\u00e9e de JavaScript se refl\u00e8te \u00e9galement dans les noms de ses versions. En effet, comme tout langage de programmation, JavaScript a \u00e9volu\u00e9 dans le temps et des changements ont \u00e9t\u00e9 apport\u00e9s aux propri\u00e9t\u00e9s de l'impl\u00e9mentation ECMAScript. Voici un tableau r\u00e9capitulatif des changements jusqu'en 2018&#160;:\n</p>\n<table class=\"wikitable\">\n\n<tbody><tr>\n<th>Nom officiel\n</th>\n<th>Abr\u00e9viation</th>\n<th>Nom non officiel</th>\n<th>Date\n</th></tr>\n<tr>\n<td>ECMAScript 1\n</td>\n<td>ES1</td>\n<td>-</td>\n<td>1997\n</td></tr>\n<tr>\n<td>ECMAScript 2\n</td>\n<td>ES2\n</td>\n<td>-</td>\n<td>1998\n</td></tr>\n<tr>\n<td>ECMAScript 3\n</td>\n<td>ES3</td>\n<td>-</td>\n<td>1999\n</td></tr>\n<tr>\n<td>ECMAScript 4\n</td>\n<td>-\n</td>\n<td>-\n</td>\n<td>Version abandonn\u00e9e et jamais impl\u00e9ment\u00e9e\n</td></tr>\n<tr>\n<td>ECMAScript 5\n</td>\n<td>ES5\n</td>\n<td>-\n</td>\n<td>2009\n</td></tr>\n<tr>\n<td>ECMAScript 6\n</td>\n<td>ES6\n</td>\n<td>ES2015\n</td>\n<td>2015\n</td></tr>\n<tr>\n<td>ECMAScript 7\n</td>\n<td>ES7\n</td>\n<td>ES2016\n</td>\n<td>2016\n</td></tr></tbody></table>\n<p>\u00c0 partir de 2015, il y a le souhait de rel\u00e2cher des nouvelles versions de mani\u00e8re plus fr\u00e9quente, par exemple une fois par ann\u00e9e. Il faut n\u00e9anmoins tenir compte qu'une nouvelle version du langage n\u00e9cessite \u00e9galement d'une version de l'interpr\u00e8te qui puisse comprendre les nouveaut\u00e9s du langage. Ceci est l'une des sources d'incompatibilit\u00e9 les plus r\u00e9pandues, surtout dans les pages web qui n\u00e9cessitent d'une version du navigateur r\u00e9cent pour pouvoir \u00eatre interpr\u00e9t\u00e9e correctement.\n</p>\n<h2><span class=\"mw-headline\" id=\"Comprendre_JavaScript\">Comprendre JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=6\" title=\"Modifier la section\u202f: Comprendre JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=6\" title=\"Modifier le code source de la section : Comprendre JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h2>\n<figure class=\"mw-halign-right\" typeof=\"mw:File/Thumb\"><a href=\"/fr/Fichier:JavaScript_trois_niveau_js.png\" class=\"mw-file-description\"><img src=\"/fmediawiki/images/thumb/9/9e/JavaScript_trois_niveau_js.png/400px-JavaScript_trois_niveau_js.png\" decoding=\"async\" width=\"400\" height=\"393\" class=\"mw-file-element\" srcset=\"/fmediawiki/images/thumb/9/9e/JavaScript_trois_niveau_js.png/600px-JavaScript_trois_niveau_js.png 1.5x, /fmediawiki/images/9/9e/JavaScript_trois_niveau_js.png 2x\" /></a><figcaption>Les trois niveaux du code JavaScript.</figcaption></figure>\n<p>Une des pratiques pour initier les n\u00e9ophytes \u00e0 JavaScript consiste \u00e0 montrer un exemple de bo\u00eete d\u2019alerte qui s\u2019affiche \u00e0 l\u2019int\u00e9rieur du navigateur web avec un \u00ab&#160;Hello world&#160;\u00bb. Voici le r\u00e9sultat en image et le code pour l\u2019obtenir&#160;:\n</p>\n<figure class=\"mw-halign-none\" typeof=\"mw:File/Thumb\"><a href=\"/fr/Fichier:JavaScript_exemple_alert.png\" class=\"mw-file-description\"><img src=\"/fmediawiki/images/thumb/3/3d/JavaScript_exemple_alert.png/360px-JavaScript_exemple_alert.png\" decoding=\"async\" width=\"360\" height=\"103\" class=\"mw-file-element\" srcset=\"/fmediawiki/images/3/3d/JavaScript_exemple_alert.png 1.5x\" /></a><figcaption>Exemple de bo\u00eete d'alerte en JavaScript.</figcaption></figure>\n<pre> alert(\"Hello World en JavaScript\");\n</pre>\n<p>Cet exemple, sans doute utilis\u00e9 pour sa simplicit\u00e9 d\u2019une part, et probablement pour l\u2019excitation qu\u2019il est cens\u00e9 transmettre aux n\u00e9ophytes par le fait qu\u2019il se passe quelque chose \u00e0 l\u2019\u00e9cran; n\u2019est cependant pas tr\u00e8s repr\u00e9sentatif des bases du langage. En effet, JavaScript s\u2019articule sur trois niveaux emboit\u00e9s. De l\u2019int\u00e9rieur \u00e0 l\u2019ext\u00e9rieur, on trouve&#160;:\n</p>\n<ol><li><b>Les fondamentaux du langage</b></li>\n<li><b>L\u2019environnement</b></li>\n<li><b>Le code source</b></li></ol>\n<h3><span class=\"mw-headline\" id=\"Les_fondamentaux_du_langage\">Les fondamentaux du langage</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=7\" title=\"Modifier la section\u202f: Les fondamentaux du langage\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=7\" title=\"Modifier le code source de la section : Les fondamentaux du langage\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>Le premier niveau concerne les \u00e9l\u00e9ments fondamentaux et constitutifs du langage lui-m\u00eame. Comme tout langage de programmation, on retrouve \u00e0 ce stade des aspects li\u00e9s \u00e0 la syntaxe, aux \u00e9l\u00e9ments n\u00e9cessaires pour la construction d\u2019algorithmes, etc. (voir <a href=\"/fr/Introduction_%C3%A0_la_programmation\" title=\"Introduction \u00e0 la programmation\">Introduction \u00e0 la programmation</a> pour un aper\u00e7u de ces \u00e9l\u00e9ments). Les \u00e9l\u00e9ments disponibles \u00e0 ce niveau sont accessibles \u00e0 tout moment et dans n\u2019importe quel cadre d\u2019utilisation de JavaScript.\n</p>\n<ul><li>Voir <a href=\"/fr/Tutoriel_JavaScript_de_base\" title=\"Tutoriel JavaScript de base\">Tutoriel JavaScript de base</a> pour un aper\u00e7u des fondamentaux du langage</li></ul>\n<h3><span class=\"mw-headline\" id=\"L\u2019environnement\">L\u2019environnement</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=8\" title=\"Modifier la section\u202f: L\u2019environnement\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=8\" title=\"Modifier le code source de la section : L\u2019environnement\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<figure typeof=\"mw:File/Thumb\"><a href=\"/fr/Fichier:JS-environments.png\" class=\"mw-file-description\"><img src=\"/fmediawiki/images/thumb/5/5e/JS-environments.png/300px-JS-environments.png\" decoding=\"async\" width=\"300\" height=\"151\" class=\"mw-file-element\" srcset=\"/fmediawiki/images/thumb/5/5e/JS-environments.png/450px-JS-environments.png 1.5x, /fmediawiki/images/thumb/5/5e/JS-environments.png/600px-JS-environments.png 2x\" /></a><figcaption>Les diff\u00e9rents types d'environnements o\u00f9 l'on peut utiliser JavaScript.</figcaption></figure>\n<p>Le deuxi\u00e8me niveau concerne l\u2019environnement dans lequel JavaScript est ex\u00e9cut\u00e9, c'est-\u00e0-dire o\u00f9 se trouve \"physiquement\" l'interpr\u00e8te qui lit et compute les scripts, car selon le type d\u2019environnement, le langage a acc\u00e8s \u00e0 diff\u00e9rents \u00e9l\u00e9ments et fonctionnalit\u00e9s. C\u2019est \u00e0 ce stade que se fait la distinction entre JavaScript \u00ab&#160;c\u00f4t\u00e9-client&#160;\u00bb, \u00ab&#160;c\u00f4t\u00e9-serveur&#160;\u00bb et d\u2019autres types d\u2019utilisation.\n</p><p>Les fronti\u00e8res entre les environnements deviennent de moins en moins d\u00e9finies car on a plut\u00f4t la tendance \u00e0 int\u00e9grer plusieurs environnements m\u00eame pour une seule application. N\u00e9anmoins, <b>il est important de comprendre o\u00f9 se passe la computation en termes de input et output</b>. Prenons la configuration la plus r\u00e9pandue dans le d\u00e9veloppement web qui consiste dans l'architecture client-serveur&#160;: un client fait une requ\u00eate au serveur&#160;; le serveur envoie la r\u00e9ponse au client. Nous pouvons d\u00e9composer ce m\u00e9canisme en diff\u00e9rentes \u00e9tapes et pour chaque \u00e9tape d\u00e9finir l'input, l'output et la fonction <code><i>F</i>(X) = Y</code>.\n</p>\n<table class=\"wikitable\">\n<tbody><tr>\n<th>\u00c9tape\n</th>\n<th>Environnement\n</th>\n<th>Input\n</th>\n<th>Output\n</th>\n<th><i>F</i>(X) = Y\n</th></tr>\n<tr>\n<td>#1\n</td>\n<td>Client\n</td>\n<td>URL\n</td>\n<td><a href=\"/fr/Le_fonctionnement_du_protocole_HTTP\" title=\"Le fonctionnement du protocole HTTP\">Requ\u00eate HTTP</a>\n</td>\n<td>L'utilisateur saisit ou clique sur un lien qui pointe vers un URL sp\u00e9cifique, par exemple <a rel=\"nofollow\" class=\"external free\" href=\"https://edutechwiki.unige.ch\">https://edutechwiki.unige.ch</a>. Le navigateur compute donc une requ\u00eate vers cet URL.\n</td></tr>\n<tr>\n<td>#2\n</td>\n<td>Serveur\n</td>\n<td><a href=\"/fr/Le_fonctionnement_du_protocole_HTTP\" title=\"Le fonctionnement du protocole HTTP\">Requ\u00eate HTTP</a>\n</td>\n<td>R\u00e9ponse\n<p>text/html\n</p>\n</td>\n<td>Le serveur qui est li\u00e9 \u00e0 cet URL re\u00e7oit la r\u00e9ponse HTTP et compute la r\u00e9ponse. Dans ce cas, il s'agit d'une \"simple\" page HTML, mais on aurait pu avoir une computation plus complexe, avec la r\u00e9cup\u00e9ration d'informations depuis une base de donn\u00e9es, un m\u00e9canisme d'authentification de l'utilisateur, etc.\n</td></tr>\n<tr>\n<td>#3\n</td>\n<td>Client\n</td>\n<td>R\u00e9ponse text/html\n</td>\n<td>Affichage de la page\n</td>\n<td>Lorsque le navigateur re\u00e7oit la r\u00e9ponse, il doit computer le code HTML de la page et faire toutes les op\u00e9rations n\u00e9cessaires pour afficher le r\u00e9sultat dans la fen\u00eatre du navigateur. Si cette page poss\u00e8de du code JavaScript, alors le navigateur doit \u00e9galement computer le code qui vient avec la page.\n</td></tr></tbody></table>\n<p>L'environnement d\u00e9termine donc principalement o\u00f9 se passe la computation en termes d'input et output. Selon le type d'environnement, le code source peut donc acc\u00e9der \u00e0 des inputs ou outputs diff\u00e9rents. Dans la suite du paragraphe, nous proposons une br\u00e8ve illustration des environnements principaux dans lesquels du code JavaScript peut \u00eatre ex\u00e9cut\u00e9/comput\u00e9. \n</p>\n<h4><span class=\"mw-headline\" id=\"JavaScript_\u00ab_c\u00f4t\u00e9-client_\u00bb\">JavaScript \u00ab&#160;c\u00f4t\u00e9-client&#160;\u00bb</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=9\" title=\"Modifier la section\u202f: JavaScript \u00ab&#160;c\u00f4t\u00e9-client&#160;\u00bb\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=9\" title=\"Modifier le code source de la section : JavaScript \u00ab&#160;c\u00f4t\u00e9-client&#160;\u00bb\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h4>\n<p>L\u2019ex\u00e9cution du code se fait directement sur l\u2019ordinateur de l\u2019utilisateur, plus sp\u00e9cifiquement \u00e0 l\u2019int\u00e9rieur du navigateur web. Le langage de base est impl\u00e9ment\u00e9 par des \u00e9l\u00e9ments qui permettent d\u2019acc\u00e9der \u00e0 certains aspects du navigateur, notamment au niveau de la fen\u00eatre qui contient la page visualis\u00e9e. \n</p><p>La cr\u00e9ation de la bo\u00eete d\u2019alerte utilis\u00e9e dans l\u2019exemple au d\u00e9but de cette page se situe exactement \u00e0 ce niveau&#160;: la bo\u00eete n\u2019est pas un \u00e9l\u00e9ment fondamental du langage, mais est un \u00e9l\u00e9ment du navigateur web auquel JavaScript a acc\u00e8s gr\u00e2ce \u00e0 une sorte d'\u00ab&#160;extension&#160;\u00bb du langage de base. De mani\u00e8re plus technique, JavaScript peut acc\u00e9der \u00e0 l\u2019objet <code>window</code> du navigateur qui poss\u00e8de une m\u00e9thode (fonction) nomm\u00e9e <code>alert</code> et qui permet d\u2019afficher un message sous forme de bo\u00eete. \n</p><p>L'environnement de <a href=\"/fr/Tutoriel_JavaScript_c%C3%B4t%C3%A9_client\" title=\"Tutoriel JavaScript c\u00f4t\u00e9 client\">JavaScript c\u00f4t\u00e9-client</a> est repr\u00e9sent\u00e9 par ce qu'on appelle les <a rel=\"nofollow\" class=\"external text\" href=\"https://developer.mozilla.org/fr/Apprendre/JavaScript/Client-side_web_APIs\">Web API</a> (ou Browser API ou encore Client-Side API) qui permettent justement d'avoir acc\u00e8s et manipuler diff\u00e9rents types d'informations disponibles gr\u00e2ce \u00e0 l'interm\u00e9diaire du navigateur web. Parmi les Web API figurent&#160;:\n</p>\n<ul><li><b><a href=\"/fr/Interactivit%C3%A9_avec_JavaScript\" title=\"Interactivit\u00e9 avec JavaScript\">DOM API</a></b>\n<dl><dd>Manipulation du <a href=\"/fr/Document_Object_Model\" title=\"Document Object Model\">Document Object Model</a> qui permet de modifier dynamiquement le contenu de la page affich\u00e9e dans le navigateur&#160;;</dd></dl></li>\n<li><b> <a href=\"/fr/HTML5_audio_et_video\" title=\"HTML5 audio et video\">Audio et Video API</a> </b>\n<dl><dd>Contr\u00f4le sur les \u00e9l\u00e9ments audio et vid\u00e9o pr\u00e9sent dans la page.</dd></dl></li>\n<li><b>Graphique API</b>\n<dl><dd>Possibilit\u00e9 de manipuler des \u00e9l\u00e9ments graphiques comme le <a href=\"/fr/Canvas_(HTML5)\" title=\"Canvas (HTML5)\">Canvas</a> ou les <a href=\"/fr/SVG\" title=\"SVG\">SVG</a>.</dd></dl></li>\n<li><b><a href=\"/fr/AJAX\" title=\"AJAX\">AJAX</a></b>\n<dl><dd>Possibilit\u00e9 de r\u00e9cup\u00e9rer des informations depuis d'autres pages (i.e. envoyer d'autres requ\u00eates HTTP), sans mettre \u00e0 jour la page actuelle.</dd></dl></li>\n<li><b>API du dispositif</b>\n<dl><dd>Acc\u00e8s \u00e0 des informations sur le navigateur, et par extensions sur le dispositif lui-m\u00eame. Possibilit\u00e9 d'utiliser la g\u00e9olocalisation du dispositif, d'envoyer des notifications, etc.</dd></dl></li>\n<li><b>API de Stockage</b>\n<dl><dd>Possibilit\u00e9 de sauvegarder et r\u00e9cup\u00e9rer des informations directement dans le navigateur de l'utilisateur de mani\u00e8re plus avanc\u00e9e par rapport aux simples <i>cookies</i>.</dd></dl></li>\n<li><b>Third party API</b>\n<dl><dd>Possibilit\u00e9 d'\u00e9changer, souvent avec AJAX, des informations avec des services tiers comme Google Maps, Twitter, etc. \u00c0 noter que certains Third party API n\u00e9cessite de requ\u00eate c\u00f4t\u00e9-server pour des raisons de s\u00e9curit\u00e9 (voir Node.js plus bas).</dd></dl></li></ul>\n<p>Cette liste est bas\u00e9e sur  <a rel=\"nofollow\" class=\"external text\" href=\"https://developer.mozilla.org/fr/Apprendre/JavaScript/Client-side_web_APIs\">APIs web utilis\u00e9es c\u00f4t\u00e9 client</a>, MDN web docs, f\u00e9vrier 2018.\n</p>\n<h4><span class=\"mw-headline\" id=\"JavaScript_\u00ab_c\u00f4t\u00e9-serveur_\u00bb\">JavaScript \u00ab&#160;c\u00f4t\u00e9-serveur&#160;\u00bb</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=10\" title=\"Modifier la section\u202f: JavaScript \u00ab&#160;c\u00f4t\u00e9-serveur&#160;\u00bb\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=10\" title=\"Modifier le code source de la section : JavaScript \u00ab&#160;c\u00f4t\u00e9-serveur&#160;\u00bb\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h4>\n<p>L\u2019ex\u00e9cution du code se fait directement sur le serveur, c\u2019est-\u00e0-dire sur l\u2019ordinateur qui re\u00e7oit les requ\u00eates (e.g. une requ\u00eate http pour une page web). Le langage de base est impl\u00e9ment\u00e9 par des \u00e9l\u00e9ments qui permettent d\u2019acc\u00e9der \u00e0 certaines fonctionnalit\u00e9s utiles pour fournir un service aux utilisateurs qui ont lanc\u00e9 la requ\u00eate, par exemple la recherche dans une base de donn\u00e9es, l\u2019envoi d\u2019email, etc. \n</p><p>Pour que JavaScript puisse \u00eatre utilis\u00e9 sur un serveur, en consid\u00e9ration du fait qu'il s'agit d'un langage interpr\u00e9t\u00e9, il faut justement que le serveur ait install\u00e9 un interpr\u00e8te/moteur. \u00c0 pr\u00e9sent, le plus utilis\u00e9 \u00e0 ce propos est <a href=\"/fr/Node.js\" title=\"Node.js\">Node.js</a> qui est expliqu\u00e9 plus en d\u00e9tail plus bas dans la page.\n</p>\n<h4><span class=\"mw-headline\" id=\"Autres_environnements\">Autres environnements</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=11\" title=\"Modifier la section\u202f: Autres environnements\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=11\" title=\"Modifier le code source de la section : Autres environnements\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h4>\n<p>Le m\u00eame principe s\u2019adapte \u00e0 tout autre environnement. Par exemple, lors de l\u2019utilisation de JavaScript pour d\u00e9velopper des applications mobiles, le langage fondamental sera impl\u00e9ment\u00e9 par des \u00e9l\u00e9ments propres au smartphone (e.g. orientation, microphone, GPS, etc.). Dans les <a href=\"/fr/Internet_des_objets_avec_JavaScript\" title=\"Internet des objets avec JavaScript\">objets connect\u00e9s</a>, le langage de base pourra exploiter des \u00e9l\u00e9ments comme les senseurs et les capteurs, ou les <i>actuateurs</i> (e.g. des LED, les bras/jambes d'un robot, ...). \n</p><p>Voici quelques exemples d\u2019utilisation de JavaScript dans d\u2019autres environnements&#160;:\n</p>\n<ul><li>D\u00e9veloppement d\u2019application Desktop cross-plateforme, voir <a href=\"/fr/Electron\" title=\"Electron\">Electron</a></li>\n<li>D\u00e9veloppement d\u2019application mobile, voir <a href=\"/fr/Adobe_PhoneGap\" title=\"Adobe PhoneGap\">Adobe PhoneGap</a></li>\n<li><a href=\"/fr/Internet_des_objets_avec_JavaScript\" title=\"Internet des objets avec JavaScript\">Internet des objets avec JavaScript</a></li></ul>\n<h3><span class=\"mw-headline\" id=\"Le_code_source\">Le code source</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=12\" title=\"Modifier la section\u202f: Le code source\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=12\" title=\"Modifier le code source de la section : Le code source\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>Le troisi\u00e8me niveau concerne le code source, c\u2019est-\u00e0-dire le code \u00e9crit par le(s) d\u00e9veloppeur(s) et qui repr\u00e9sente l\u2019application (i.e. le programme \u2013 ce qu\u2019on peut/veut faire avec l\u2019ensemble des instructions). Le code source se compose du m\u00e9lange entre \u00e9l\u00e9ments fondamentaux et \u00e9l\u00e9ments disponibles dans l\u2019environnement. Par cons\u00e9quent, il faut conna\u00eetre \u00e0 la fois les \u00e9l\u00e9ments de base de JavaScript, mais \u00e9galement l\u2019environnement dans lequel le code source va \u00eatre ex\u00e9cut\u00e9. \nVoici un premier exemple de combinaison tr\u00e8s simple de code source pour obtenir un r\u00e9sultat similaire \u00e0 la bo\u00eete d\u2019alerte de l\u2019exemple de d\u00e9part, c\u2019est-\u00e0-dire dans l\u2019environnement c\u00f4t\u00e9-client du navigateur web (la seule chose qu\u2019il faut conna\u00eetre \u00e0 propos du code \u00e0 ce stade concerne l\u2019utilisation des commentaires avec la notation <code>//Ceci est un commentaire, pas une instruction</code>). \n</p>\n<div class=\"mw-highlight mw-highlight-lang-javascript mw-content-ltr\" dir=\"ltr\"><pre><span></span><span class=\"c1\">//1.Utilisation du langage fondamental</span>\n<span class=\"kd\">var</span><span class=\"w\"> </span><span class=\"nx\">message</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s1\">&#39;hello world&#39;</span><span class=\"p\">;</span>\n<span class=\"c1\">//2. Utilisation du langage fondamental</span>\n<span class=\"kd\">var</span><span class=\"w\"> </span><span class=\"nx\">shout</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nx\">message</span><span class=\"p\">.</span><span class=\"nx\">toUpperCase</span><span class=\"p\">();</span>\n<span class=\"c1\">//3. Utilisation de l&#39;environnement</span>\n<span class=\"nb\">window</span><span class=\"p\">.</span><span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">shout</span><span class=\"p\">);</span>\n</pre></div>\n<p>Voici une br\u00e8ve explication des trois lignes de code&#160;:\n</p>\n<ol><li>Utilisation du langage fondamental pour associer \u00e0 une variable nomm\u00e9e 'message' la suite de caract\u00e8res (string) 'hello world';</li>\n<li>Utilisation du langage fondamental pour associer \u00e0 la variable nomm\u00e9e 'shout' la transformation de 'hello world' en 'HELLO WORLD' gr\u00e2ce \u00e0 la m\u00e9thode toUpperCase() associable \u00e0 une suite de caract\u00e8res (i.e. objet string).</li>\n<li>Utilisation de l'environnement pour afficher 'HELLO WORLD' dans une boite d'alerte disponible dans le navigateur web de l'utilisateur gr\u00e2ce \u00e0 la m\u00e9thode alert() associable \u00e0 la fen\u00eatre (i.e. objet window) du navigateur.</li></ol>\n<h2><span class=\"mw-headline\" id=\"Cadre_d\u2019utilisation_de_JavaScript\">Cadre d\u2019utilisation de JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=13\" title=\"Modifier la section\u202f: Cadre d\u2019utilisation de JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=13\" title=\"Modifier le code source de la section : Cadre d\u2019utilisation de JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h2>\n<p>Le cadre d\u2019utilisation de JavaScript d\u00e9pend de l\u2019environnement dans lequel il est ex\u00e9cut\u00e9, et \u00e0 l\u2019int\u00e9rieur de ces environnements, les possibilit\u00e9s d\u2019utilisation de JavaScript sont potentiellement infinies. Voici une liste non exhaustive des utilisations les plus fr\u00e9quentes&#160;: \n</p>\n<h3><span class=\"mw-headline\" id=\"JavaScript_:_utilisation_de_base_avec_HTML\">JavaScript&#160;: utilisation de base avec HTML</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=14\" title=\"Modifier la section\u202f: JavaScript&#160;: utilisation de base avec HTML\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=14\" title=\"Modifier le code source de la section : JavaScript&#160;: utilisation de base avec HTML\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>L\u2019utilisation la plus r\u00e9pandue de JavaScript \u00ab&#160;c\u00f4t\u00e9-client&#160;\u00bb concerne le d\u00e9veloppement de pages web dynamiques qui r\u00e9agissent \u00e0 certains \u00e9v\u00e9nements. Par exemple, JavaScript permet de&#160;:\n</p>\n<ul><li>Interagir avec la structure d\u2019une page web (i.e. le <a href=\"/fr/Document_Object_Model\" title=\"Document Object Model\">Document Object Model</a>, ou DOM) pour changer dynamiquement le contenu affich\u00e9 dans le navigateur en fonction notamment des actions de l\u2019utilisateur (e.g. cliquer sur un bouton)</li>\n<li>Cr\u00e9er des formulaires web qui affichent des feedbacks et/ou messages d\u2019erreurs avant d\u2019envoyer le contenu du formulaire&#160;;</li>\n<li>Cr\u00e9er des animations qui facilitent la pr\u00e9sentation d\u2019informations telles que des carrousels d\u2019images, des fen\u00eatres modales (qui ont remplac\u00e9 le pop-up), \u00ab&#160;tabs&#160;\u00bb, etc.</li>\n<li>Faciliter la navigation \u00e0 travers des menus d\u00e9roulants, des effets de scroll de la page pour les ancrages internes, etc.</li></ul>\n<p>Cette utilisation de JavaScript a \u00e9t\u00e9 identifi\u00e9e par le pass\u00e9 (ann\u00e9es 1990) avec l'acronyme <a href=\"http://edutechwiki.unige.ch/en/DHTML\" class=\"extiw\" title=\"en:DHTML\">DHTML</a>, c'est-\u00e0-dire Dynamic HTML. Ce terme n'est plus r\u00e9pandu \u00e0 pr\u00e9sent, mais le concept reste le m\u00eame.\n</p>\n<h3><span class=\"mw-headline\" id=\"JavaScript_et_HTML5_:_utilisation_avanc\u00e9e\">JavaScript et HTML5&#160;: utilisation avanc\u00e9e</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=15\" title=\"Modifier la section\u202f: JavaScript et HTML5&#160;: utilisation avanc\u00e9e\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=15\" title=\"Modifier le code source de la section : JavaScript et HTML5&#160;: utilisation avanc\u00e9e\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<figure class=\"mw-halign-right\" typeof=\"mw:File/Thumb\"><a href=\"/fr/Fichier:JavaScript_as_a_controller.png\" class=\"mw-file-description\"><img src=\"/fmediawiki/images/thumb/c/cf/JavaScript_as_a_controller.png/400px-JavaScript_as_a_controller.png\" decoding=\"async\" width=\"400\" height=\"166\" class=\"mw-file-element\" srcset=\"/fmediawiki/images/thumb/c/cf/JavaScript_as_a_controller.png/600px-JavaScript_as_a_controller.png 1.5x, /fmediawiki/images/thumb/c/cf/JavaScript_as_a_controller.png/800px-JavaScript_as_a_controller.png 2x\" /></a><figcaption>Utilisation de JavaScript pour d\u00e9terminer le contenu d'une page.</figcaption></figure>\n<p><a href=\"/fr/HTML5\" title=\"HTML5\">HTML5</a> introduit des \u00e9l\u00e9ments (i.e. balises) dans le langage et propose des API (Application Programming Interface) qui sont express\u00e9ment con\u00e7us pour JavaScript. HTML5 n\u2019a pas tout simplement introduit une nouvelle fa\u00e7on de coder le contenu des pages web&#160;; il a introduit un \u00e9cosyst\u00e8me qui se compose de plusieurs \u00e9l\u00e9ments \u00e0 diff\u00e9rents niveaux. \n</p><p>La structure d\u2019une page/application web n\u2019a plus vraiment la forme de trois ensembles qui se recouvrent seulement partiellement&#160;: contenu (HTML), forme (CSS), et comportements (JavaScript). On est plut\u00f4t dans une perspective d\u2019int\u00e9gration totale, dans laquelle JavaScript peut assumer le r\u00f4le de contr\u00f4leur qui g\u00e9n\u00e8re et/ou transforme le contenu, mais qui impl\u00e9mente \u00e9galement d\u2019autres aspects interactifs&#160;:\n</p>\n<ul><li>Cr\u00e9ation et animation d\u2019\u00e9l\u00e9ments graphiques \u00e0 travers l\u2019\u00e9l\u00e9ment <a href=\"/fr/Canvas_(HTML5)\" title=\"Canvas (HTML5)\">canvas</a> ou <a href=\"/fr/Tutoriel_SVG_avec_HTML5\" title=\"Tutoriel SVG avec HTML5\"> SVG</a>&#160;;</li>\n<li>Interaction avec \u00e9l\u00e9ments multim\u00e9dia&#160;: <a href=\"/fr/HTML5_audio_et_video\" title=\"HTML5 audio et video\">audio et vid\u00e9o pr\u00e9sent sur internet</a>, mais \u00e9galement micro et webcam de l\u2019utilisateur&#160;;</li>\n<li>G\u00e9olocalisation, messages en temps r\u00e9el, \u2026</li></ul>\n<h3><span class=\"mw-headline\" id=\"Biblioth\u00e8ques_JavaScript\">Biblioth\u00e8ques JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=16\" title=\"Modifier la section\u202f: Biblioth\u00e8ques JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=16\" title=\"Modifier le code source de la section : Biblioth\u00e8ques JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>Les d\u00e9veloppeurs JavaScript disposent \u00e0 pr\u00e9sent de plusieurs biblioth\u00e8ques qui mettent \u00e0 disposition des fonctionnalit\u00e9s plus ou moins sp\u00e9cifiques, ou qui les aident \u00e0 acc\u00e9l\u00e9rer le codage gr\u00e2ce \u00e0 des notations plus simples. Un autre avantage des biblioth\u00e8ques JavaScript concerne la compatibilit\u00e9 entre diff\u00e9rents navigateurs.\n</p>\n<ul><li>Voir <a href=\"/fr/Biblioth%C3%A8ques_JavaScript\" title=\"Biblioth\u00e8ques JavaScript\">Biblioth\u00e8ques JavaScript</a></li>\n<li><a href=\"/fr/JQuery\" title=\"JQuery\">jQuery</a>, qui est une des biblioth\u00e8ques les plus utilis\u00e9es</li>\n<li><a href=\"/fr/Vue.js\" title=\"Vue.js\">Vue.js</a> pour quelques \u00e9l\u00e9ments de programmation appliqu\u00e9s au niveau interm\u00e9diaire</li></ul>\n<h3><span class=\"mw-headline\" id=\"JavaScript_Object_Notation_(JSON)\">JavaScript Object Notation (JSON)</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=17\" title=\"Modifier la section\u202f: JavaScript Object Notation (JSON)\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=17\" title=\"Modifier le code source de la section : JavaScript Object Notation (JSON)\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>Le JavaScript Object Notation (<a href=\"/fr/JSON\" title=\"JSON\">JSON</a>) est un format qui exploite la syntaxe des objets en JavaScript (voir <a href=\"/fr/Tutoriel_JavaScript_de_base\" title=\"Tutoriel JavaScript de base\">Tutoriel JavaScript de base</a>) pour l'\u00e9change de donn\u00e9es textuelles. Par rapport au format XML, qui est souvent utilis\u00e9 dans le cadre de l'\u00e9change de donn\u00e9es entre machines/sites web, le format JSON a l'avantage d'\u00eatre d\u00e9j\u00e0 en format objet JavaScript. Il est par cons\u00e9quent simple d'int\u00e9grer les donn\u00e9es re\u00e7ues d'une autre source directement dans le code JavaScript. JSON est donc souvent utilis\u00e9 dans le cadre des API (Application Programming Interface). Voir \u00e9galement&#160;: \n</p>\n<ul><li><a href=\"/fr/JSON\" title=\"JSON\">JSON</a></li>\n<li><a href=\"http://edutechwiki.unige.ch/en/JSON\" class=\"extiw\" title=\"en:JSON\">en:JSON</a> sur EduTechWiki en anglais</li>\n<li><a rel=\"nofollow\" class=\"external text\" href=\"http://www.json.org/\">JSON official site</a></li></ul>\n<h3><span class=\"mw-headline\" id=\"Node.js_:_JavaScript_server-side_et_dans_d'autres_contextes\">Node.js&#160;: JavaScript server-side et dans d'autres contextes</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=18\" title=\"Modifier la section\u202f: Node.js&#160;: JavaScript server-side et dans d&#39;autres contextes\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=18\" title=\"Modifier le code source de la section : Node.js&#160;: JavaScript server-side et dans d&#39;autres contextes\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>M\u00eame si l\u2019utilisation la plus r\u00e9pandue de JavaScript reste dans le d\u00e9veloppement front-end, depuis quelques ann\u00e9es il est \u00e9galement possible d\u2019utiliser JavaScript du c\u00f4t\u00e9 serveur. <a href=\"/fr/Node.js\" title=\"Node.js\">Node.js</a> est un environnement cross plateforme qui permet de cr\u00e9er surtout (mais pas seulement) des applications web. Le projet est <a rel=\"nofollow\" class=\"external text\" href=\"https://foundation.nodejs.org/\">support\u00e9 par la Linux Foundation</a> et Node.js est d\u00e9j\u00e0 utilis\u00e9 par plusieurs gros acteurs dans le milieu technologique. Ses principaux avantages concernent&#160;:\n</p>\n<ul><li>La possibilit\u00e9 d'utiliser le m\u00eame langage pour le c\u00f4t\u00e9 front-end et back-end, ainsi que les d\u00e9veloppeurs ne doivent pas utiliser deux syntaxes diff\u00e9rentes, comme c'est souvent le cas lorsqu'on utilise un langage c\u00f4t\u00e9 serveur comme PHP.</li>\n<li>L\u2019architecture \u00ab&#160;event-driven&#160;\u00bb et les streams&#160;: dans les architecture traditionnelles, la requ\u00eate et la r\u00e9ponse sont consid\u00e9r\u00e9es comme deux entit\u00e9s s\u00e9par\u00e9es, tandis que avec Node.js il est plus facile de cr\u00e9er des \"streams\" (i.e. des flux de donn\u00e9es) entre le client et le serveur.</li>\n<li>L\u2019aspect \u00ab&#160;non-blocking&#160;\u00bb&#160;: contrairement \u00e0 d\u2019autres interpr\u00e8tes qui ex\u00e9cutent les instructions de mani\u00e8re proc\u00e9durale, en attendant que chaque instruction soit termin\u00e9e avant d\u2019entamer la suivante, Node.js ex\u00e9cute les instructions en parall\u00e8le si la m\u00e9moire le permet.</li></ul>\n<p>Pour approfondir le d\u00e9veloppement avec JavaScript en dehors du navigateur, voir&#160;:\n</p>\n<ul><li><a href=\"/fr/Node.js\" title=\"Node.js\">Node.js</a>&#160;: pr\u00e9sentation g\u00e9n\u00e9rale sur ce wiki, voir \u00e9galement le <a rel=\"nofollow\" class=\"external text\" href=\"http://www.nodejs.org\">Site officiel</a></li>\n<li><a href=\"/fr/Express.js\" title=\"Express.js\">Express.js</a>&#160;: framework pour application web</li>\n<li><a href=\"/fr/Socket.io\" title=\"Socket.io\">Socket.io</a>&#160;: real-time, bi-directional application entre client et serveur</li>\n<li><a href=\"/fr/Electron\" title=\"Electron\">Electron</a>&#160;: d\u00e9veloppement de logiciels desktop cross-plateformes</li>\n<li><a href=\"/fr/Internet_des_objets_avec_JavaScript\" title=\"Internet des objets avec JavaScript\">Internet des objets avec JavaScript</a>&#160;: Node.js est utilis\u00e9 en g\u00e9n\u00e9ral \u00e9galement comme interpr\u00e8te sur les objet connect\u00e9s comme les plateformes Arduino ou Raspberry PI</li></ul>\n<h3><span class=\"mw-headline\" id=\"JavaScript_en_Data_Science\">JavaScript en <i>Data Science</i></span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=19\" title=\"Modifier la section\u202f: JavaScript en Data Science\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=19\" title=\"Modifier le code source de la section : JavaScript en Data Science\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>M\u00eame si JavaScript est utilis\u00e9 principalement dans le d\u00e9veloppement web, gr\u00e2ce au fait qu'il soit d\u00e9sormais omnipr\u00e9sent, des d\u00e9veloppeurs commencent \u00e0 l'appliquer \u00e0 des contextes qui sont traditionnellement domin\u00e9s par d'autres langages. C'est le cas du traitement des donn\u00e9es, ou plus g\u00e9n\u00e9ralement du \"data science\", dans lequel on utilise normalement des langages comme <a rel=\"nofollow\" class=\"external text\" href=\"https://www.python.org\">Python</a> ou <a href=\"/fr/R\" class=\"mw-redirect\" title=\"R\">R</a>. Il existe des projets qui permettent d'utiliser directement JavaScript pour le traitement et la visualisation des donn\u00e9es&#160;: \n</p>\n<ul><li><a rel=\"nofollow\" class=\"external text\" href=\"https://js4ds.org/\">JavaScript for Data Science </a>&#160;: introduction compl\u00e8te \u00e0 JavaScript dans le contexte du <i>Data Science</i></li>\n<li><a rel=\"nofollow\" class=\"external text\" href=\"http://www.data-forge-js.com/\">Data-Forge</a>&#160;: data wrangling et analyses de donn\u00e9es</li>\n<li><a rel=\"nofollow\" class=\"external text\" href=\"http://jstat.github.io/\">jStat</a>&#160;: biblioth\u00e8que pour analyse statistique</li>\n<li><a rel=\"nofollow\" class=\"external text\" href=\"http://d3js.org/\">D3.js</a> Biblioth\u00e8que pour la visualisation de donn\u00e9es</li></ul>\n<h3><span class=\"mw-headline\" id=\"JavaScript_dans_d'autres_logiciels\">JavaScript dans d'autres logiciels</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=20\" title=\"Modifier la section\u202f: JavaScript dans d&#39;autres logiciels\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=20\" title=\"Modifier le code source de la section : JavaScript dans d&#39;autres logiciels\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>De plus en plus de logiciels mettent \u00e0 disposition une API pour pouvoir int\u00e9grer directement du JavaScript dans leur logique, en maximisant ainsi la possibilit\u00e9 de personnaliser le fonctionnement selon ses besoins&#160;:\n</p>\n<ul><li><a href=\"/fr/Qualtrics\" title=\"Qualtrics\">Qualtrics</a> permet d'<a rel=\"nofollow\" class=\"external text\" href=\"https://www.qualtrics.com/support/survey-platform/survey-module/question-options/add-javascript/\">ajouter du code JavaScript</a></li>\n<li>Microsoft met \u00e0 disposition la <a rel=\"nofollow\" class=\"external text\" href=\"https://docs.microsoft.com/en-us/office/dev/add-ins/develop/understanding-the-javascript-api-for-office\">JavaScript API for Office</a></li>\n<li>Adobe permet d'ajouter du JavaScript aux PDF \u00e0 travers <a rel=\"nofollow\" class=\"external text\" href=\"https://www.adobe.com/devnet/acrobat/javascript.html\">Acrobat</a></li></ul>\n<h3><span class=\"mw-headline\" id=\"JavaScript_et_les_bases_de_donn\u00e9es\">JavaScript et les bases de donn\u00e9es</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=21\" title=\"Modifier la section\u202f: JavaScript et les bases de donn\u00e9es\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=21\" title=\"Modifier le code source de la section : JavaScript et les bases de donn\u00e9es\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>JavaScript est de plus en plus utilis\u00e9 \u00e9galement dans les lignes de commandes (ou <i>shell</i>) pour administrer, interroger et effectuer des op\u00e9rations directes sur les bases de donn\u00e9es. Ces databases sont souvent de type <a href=\"/fr/Base_de_donn%C3%A9es#SQL_vs_NoSQL\" title=\"Base de donn\u00e9es\">NoSQL</a> et utilisent <a href=\"/fr/JSON\" title=\"JSON\">JSON</a> comme format de transfert des donn\u00e9es aux applications qui en font demande. Parmi les bases de donn\u00e9es les plus c\u00e9l\u00e8bres qui utilisent JavaScript on retrouve&#160;:\n</p>\n<ul><li><a href=\"/fr/MongoDB\" title=\"MongoDB\">MongoDB</a>, un database de type NoSQL</li>\n<li><a rel=\"nofollow\" class=\"external text\" href=\"http://couchdb.apache.org/\">Apache CouchDB</a>, autre database de type NoSQL</li></ul>\n<h2><span class=\"mw-headline\" id=\"Avantages_de_JavaScript\">Avantages de JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=22\" title=\"Modifier la section\u202f: Avantages de JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=22\" title=\"Modifier le code source de la section : Avantages de JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h2>\n<p>JavaScript est un langage tr\u00e8s flexible \u00e0 plusieurs niveaux. \n</p>\n<dl><dt>Pour les n\u00e9ophytes</dt>\n<dd></dd></dl>\n<ul><li>Pour commencer \u00e0 programmer avec JavaScript, il suffit de disposer d\u2019un \u00e9diteur de texte et d\u2019un navigateur internet&#160;;</li>\n<li>JavaScript permet d\u2019obtenir des r\u00e9sultats \u00ab&#160;visibles&#160;\u00bb avec relativement peu d\u2019effort et avec une connaissance de base du langage&#160;;</li>\n<li>Les \u00ab&#160;r\u00e8gles&#160;\u00bb du langage sont assez souples, moins strictes compar\u00e9es \u00e0 d\u2019autres langages. (Ceci peut \u00eatre consid\u00e9r\u00e9 en revanche un d\u00e9savantage car source de confusion ou des pratiques approximatives bas\u00e9es exclusivement sur le r\u00e9sultat final)&#160;;</li>\n<li>Pour des sites/applications web simples, il suffit de t\u00e9l\u00e9verser les fichiers sur internet pour que n\u2019importe qui puisse y avoir acc\u00e8s&#160;;</li></ul>\n<dl><dt>Pour des <i>end-user developers</i> plus ambitieux</dt>\n<dd></dd></dl>\n<ul><li>JavaScript a une structure orient\u00e9e objet tr\u00e8s flexible, qui ne ressemble pas (ou en tout cas pas encore) aux classes des langages plus traditionnels, et qui permet donc plusieurs styles de d\u00e9veloppement&#160;;</li>\n<li>Gr\u00e2ce \u00e0 l\u2019\u00e9cosyst\u00e8me li\u00e9 \u00e0 <a href=\"/fr/HTML5\" title=\"HTML5\">HTML5</a>, JavaScript dispose d\u2019un acc\u00e8s privil\u00e9gi\u00e9 \u00e0 diff\u00e9rents API telles que le micro ou la webcam, la g\u00e9olocalisation, les contenus multim\u00e9dia, etc.&#160;;</li>\n<li>Il existe des centaines de <a href=\"/fr/Biblioth%C3%A8ques_JavaScript\" title=\"Biblioth\u00e8ques JavaScript\">biblioth\u00e8ques</a> qui permettent d\u2019\u00e9tendre la syntaxe de base pour augmenter la facilit\u00e9 de codage ou mettre en place des fonctionnalit\u00e9s complexes avec peu d\u2019effort&#160;;</li>\n<li>Avec l\u2019introduction et l\u2019affirmation de <a href=\"/fr/Node.js\" title=\"Node.js\">Node.js</a>, il est d\u00e9sormais possible d\u2019utiliser le m\u00eame langage pour le d\u00e9veloppement cot\u00e9-client et c\u00f4t\u00e9-serveur, avec une int\u00e9gration facilit\u00e9e entre les deux c\u00f4t\u00e9s, ainsi que dans d'autres environnements comme le d\u00e9veloppement desktop ou mobile, ou encore les objets connect\u00e9s.</li>\n<li>Pour des applications en local, l'installation de <a href=\"/fr/Node.js\" title=\"Node.js\">Node.js</a> est beaucoup plus simple et requi\u00e8re moins d'espace par rapport \u00e0 mettre en place ou installer une architecture compl\u00e8te de type <a href=\"http://edutechwiki.unige.ch/en/LAMP\" class=\"extiw\" title=\"en:LAMP\">LAMP</a> ou <a href=\"http://edutechwiki.unige.ch/en/WAMP\" class=\"extiw\" title=\"en:WAMP\">WAMP</a>.</li></ul>\n<h2><span class=\"mw-headline\" id=\"D\u00e9savantages_de_JavaScript\">D\u00e9savantages de JavaScript</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=23\" title=\"Modifier la section\u202f: D\u00e9savantages de JavaScript\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=23\" title=\"Modifier le code source de la section : D\u00e9savantages de JavaScript\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h2>\n<p>JavaScript existe depuis les ann\u00e9es 1990 et le langage a connu diff\u00e9rentes \u00e9volutions qui ont souvent \u00e9t\u00e9 plus \u00ab&#160;philosophiques&#160;\u00bb que techniques. L\u2019\u00e9volution du langage a longtemps \u00e9t\u00e9 intrins\u00e8quement li\u00e9e aux navigateurs web, et par cons\u00e9quent \u00e0 des gros probl\u00e8mes de compatibilit\u00e9s. Loin d\u2019\u00eatre r\u00e9solus, ces probl\u00e8mes sont toutefois moins d\u00e9terminants aujourd\u2019hui. Il reste n\u00e9anmoins des s\u00e9quelles d\u2019une \u00ab&#160;mauvaise r\u00e9putation&#160;\u00bb du langage qui se manifeste de la mani\u00e8re suivante&#160;:\n</p>\n<ul><li>La qualit\u00e9 des ressources et tutoriels disponibles dans le web d\u00e9pendent strictement de leur date. Les anciennes ressources utilisent des pratiques (e.g. injecter JavaScript dans les attributs des \u00e9l\u00e9ments HTML) qui ne facilitent pas la compr\u00e9hension du langage&#160;;</li>\n<li>D'autre part, surtout dans les derni\u00e8res ann\u00e9es (environ depuis 2015), le langage est constamment en \u00e9volution et en faisant du \"tourisme web\", vous risquez de voir des syntaxes diff\u00e9rentes. Pour des d\u00e9butants il est peut-\u00eatre conseill\u00e9 de se concentrer d'abord sur des guides, tutoriel, MOOC, etc. qui peuvent garantir une certaine coh\u00e9rence interne, voir \u00e0 ce propos la <a href=\"/fr/Review_de_ressources_pour_d%C3%A9buter_JavaScript\" title=\"Review de ressources pour d\u00e9buter JavaScript\">review de ressources pour d\u00e9buter JavaScript</a> propos\u00e9e par des \u00e9tudiants.</li>\n<li>\u00ab&#160;Il existe un snippet pour tout&#160;\u00bb. Surtout lorsqu\u2019on est n\u00e9ophytes, on a tendance \u00e0 chercher directement des solutions \u00ab&#160;take away&#160;\u00bb sous forme d\u2019ensemble d\u2019expressions et fonctions (i.e. des <i>snippets</i>), sans r\u00e9fl\u00e9chir sur ce que le code fait effectivement. Pour des applications de petite taille, ceci ne repr\u00e9sente pas un probl\u00e8me, mais d\u00e8s que le code se complexifie, il est facile de faire confusion.</li>\n<li>Vu que JavaScript est utilis\u00e9 un peu partout, sans une bonne connaissance du fonctionnement de base du langage, on peut essayer d\u2019utiliser du code dans un contexte diff\u00e9rent de celui pour lequel il est adapt\u00e9.</li>\n<li>Du c\u00f4t\u00e9 serveur, la disponibilit\u00e9 d\u2019h\u00e9bergeurs qui supportent Node.js dans des offres mutualis\u00e9es est beaucoup plus r\u00e9duite par rapport notamment \u00e0 PHP, mais ceci semble destin\u00e9 \u00e0 changer assez vite.</li></ul>\n<h2><span class=\"mw-headline\" id=\"Bibliographie\">Bibliographie</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;veaction=edit&amp;section=24\" title=\"Modifier la section\u202f: Bibliographie\" class=\"mw-editsection-visualeditor\"><span>modifier</span></a><span class=\"mw-editsection-divider\"> | </span><a href=\"/fmediawiki/index.php?title=JavaScript&amp;action=edit&amp;section=24\" title=\"Modifier le code source de la section : Bibliographie\"><span>modifier code</span></a><span class=\"mw-editsection-bracket\">]</span></span></h2>\n<ul><li>Crockford, D. (2008). JavaScript: The Good Parts. Unearthing the Excellence in JavaScript. Sebastopol, CA: O\u2019Reilly.</li>\n<li>Flanagan, D. (2011). JavaScript: The Definitive Guide, 6th Edition . Activate Your Web Pages (6th editio). Sebastopol, CA: O\u2019Reilly.</li>\n<li>Haverbeke, M. (2015). Eloquent JavaScript. A modern Introduction to Programming. Second Edition. San Francisco, CA: no starch press. Version web grauite sur le site officiel <a rel=\"nofollow\" class=\"external free\" href=\"http://eloquentjavascript.net/\">http://eloquentjavascript.net/</a>.\n<ul><li>Il existe \u00e9galement la <b>traduction en fran\u00e7ais pour la premi\u00e8re version du livre</b> <a rel=\"nofollow\" class=\"external free\" href=\"http://fr.eloquentjavascript.net/\">http://fr.eloquentjavascript.net/</a>.</li></ul></li>\n<li>Simpson, K. (2015-2016). You Don't Know JS (book series). Sebastopol, CA: O'Reilly. Version non edit\u00e9e disponible gratuitement <a rel=\"nofollow\" class=\"external text\" href=\"https://github.com/getify/You-Dont-Know-JS\">sous ce lien</a>.</li></ul>\n<!-- \nNewPP limit report\nCached time: 20260723104239\nCache expiry: 604800\nReduced expiry: false\nComplications: [show\u2010toc]\n[SMW] In\u2010text annotation parser time: 0 seconds\nCPU time usage: 0.047 seconds\nReal time usage: 0.050 seconds\nPreprocessor visited node count: 303/1000000\nPost\u2010expand include size: 3045/2097152 bytes\nTemplate argument size: 749/2097152 bytes\nHighest expansion depth: 6/100\nExpensive parser function count: 2/100\nUnstrip recursion depth: 0/20\nUnstrip post\u2010expand size: 1004/5000000 bytes\n-->\n<!--\nTransclusion expansion time report (%,ms,calls,template)\n100.00%    7.770      1 -total\n 92.65%    7.199      1 Mod\u00e8le:Tutoriel\n  5.78%    0.449      1 Mod\u00e8le:Citation\n-->\n\n<!-- Saved in parser cache with key fmediawiki_143:pcache:idhash:2228-0!canonical and timestamp 20260723104239 and revision id 137165. Rendering was triggered because: diff-page\n -->\n</div>"},"langlinks":[{"lang":"en","url":"http://edutechwiki.unige.ch/en/JavaScript","langname":"English","autonym":"English","*":"JavaScript"}],"categories":[{"sortkey":"","*":"Pages_utilisant_des_balises_source_obsol\u00e8tes"},{"sortkey":"","*":"Initiation_\u00e0_la_pens\u00e9e_computationnelle_avec_JavaScript"},{"sortkey":"","*":"JavaScript"},{"sortkey":"","*":"Tutoriel"},{"sortkey":"","*":"Programmation"},{"sortkey":"","*":"Ressources_STIC"}],"links":[{"ns":0,"exists":"","*":"Initiation \u00e0 la pens\u00e9e computationnelle avec JavaScript"},{"ns":0,"exists":"","*":"AJAX"},{"ns":0,"exists":"","*":"Adobe PhoneGap"},{"ns":0,"exists":"","*":"Base de donn\u00e9es"},{"ns":0,"exists":"","*":"Biblioth\u00e8ques JavaScript"},{"ns":0,"exists":"","*":"Canvas (HTML5)"},{"ns":0,"exists":"","*":"Computation avec JavaScript"},{"ns":0,"exists":"","*":"Concepts de base de JavaScript"},{"ns":0,"exists":"","*":"Document Object Model"},{"ns":0,"exists":"","*":"Electron"},{"ns":0,"exists":"","*":"Express.js"},{"ns":0,"exists":"","*":"HTML5"},{"ns":0,"exists":"","*":"HTML5 audio et video"},{"ns":0,"exists":"","*":"Interactivit\u00e9 avec JavaScript"},{"ns":0,"exists":"","*":"Internet des objets avec JavaScript"},{"ns":0,"exists":"","*":"Introduction \u00e0 la programmation"},{"ns":0,"exists":"","*":"JQuery"},{"ns":0,"exists":"","*":"JSON"},{"ns":0,"exists":"","*":"Java"},{"ns":0,"exists":"","*":"JavaScript dans le navigateur"},{"ns":0,"exists":"","*":"Langage de script"},{"ns":0,"exists":"","*":"Le fonctionnement du protocole HTTP"},{"ns":0,"exists":"","*":"Liens JavaScript"},{"ns":0,"exists":"","*":"MongoDB"},{"ns":0,"exists":"","*":"Node.js"},{"ns":0,"exists":"","*":"Premiers pas avec JavaScript"},{"ns":0,"exists":"","*":"Qualtrics"},{"ns":0,"exists":"","*":"R"},{"ns":0,"exists":"","*":"Review de ressources pour d\u00e9buter JavaScript"},{"ns":0,"exists":"","*":"STIC I"},{"ns":0,"exists":"","*":"SVG"},{"ns":0,"exists":"","*":"Socket.io"},{"ns":0,"exists":"","*":"Tutoriel JavaScript c\u00f4t\u00e9 client"},{"ns":0,"exists":"","*":"Tutoriel JavaScript de base"},{"ns":0,"exists":"","*":"Tutoriel SVG avec HTML5"},{"ns":0,"exists":"","*":"Vue.js"},{"ns":0,"exists":"","*":"Web 2.0"},{"ns":14,"exists":"","*":"Cat\u00e9gorie:JavaScript"}],"templates":[{"ns":10,"exists":"","*":"Mod\u00e8le:Tutoriel"},{"ns":10,"exists":"","*":"Mod\u00e8le:Citation"}],"images":["Unofficial_JavaScript_logo.svg","JavaScript_trois_niveau_js.png","JavaScript_exemple_alert.png","JS-environments.png","JavaScript_as_a_controller.png"],"externallinks":["https://developer.mozilla.org/fr/docs/Web/JavaScript","https://fr.wikipedia.org/wiki/Brendan_Eich","https://www.ecma-international.org","https://www.ecma-international.org/memento/TC39.htm","https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript","https://blog.codinghorror.com/the-principle-of-least-power/","https://developer.mozilla.org/fr/Apprendre/JavaScript/Client-side_web_APIs","http://www.json.org/","https://foundation.nodejs.org/","http://www.nodejs.org","https://www.python.org","https://js4ds.org/","http://www.data-forge-js.com/","http://jstat.github.io/","http://d3js.org/","https://www.qualtrics.com/support/survey-platform/survey-module/question-options/add-javascript/","https://docs.microsoft.com/en-us/office/dev/add-ins/develop/understanding-the-javascript-api-for-office","https://www.adobe.com/devnet/acrobat/javascript.html","http://couchdb.apache.org/","https://github.com/getify/You-Dont-Know-JS","http://eloquentjavascript.net/","http://fr.eloquentjavascript.net/"],"sections":[{"toclevel":1,"level":"2","line":"Introduction","number":"1","index":"1","fromtitle":"JavaScript","byteoffset":358,"anchor":"Introduction","linkAnchor":"Introduction"},{"toclevel":2,"level":"3","line":"D\u00e9finition formelle","number":"1.1","index":"2","fromtitle":"JavaScript","byteoffset":1527,"anchor":"D\u00e9finition_formelle","linkAnchor":"D\u00e9finition_formelle"},{"toclevel":2,"level":"3","line":"D\u00e9finition informelle","number":"1.2","index":"3","fromtitle":"JavaScript","byteoffset":2202,"anchor":"D\u00e9finition_informelle","linkAnchor":"D\u00e9finition_informelle"},{"toclevel":2,"level":"3","line":"Histoire de JavaScript","number":"1.3","index":"4","fromtitle":"JavaScript","byteoffset":3204,"anchor":"Histoire_de_JavaScript","linkAnchor":"Histoire_de_JavaScript"},{"toclevel":2,"level":"3","line":"Versions de JavaScript","number":"1.4","index":"5","fromtitle":"JavaScript","byteoffset":5235,"anchor":"Versions_de_JavaScript","linkAnchor":"Versions_de_JavaScript"},{"toclevel":1,"level":"2","line":"Comprendre JavaScript","number":"2","index":"6","fromtitle":"JavaScript","byteoffset":6428,"anchor":"Comprendre_JavaScript","linkAnchor":"Comprendre_JavaScript"},{"toclevel":2,"level":"3","line":"Les fondamentaux du langage","number":"2.1","index":"7","fromtitle":"JavaScript","byteoffset":7368,"anchor":"Les_fondamentaux_du_langage","linkAnchor":"Les_fondamentaux_du_langage"},{"toclevel":2,"level":"3","line":"L\u2019environnement","number":"2.2","index":"8","fromtitle":"JavaScript","byteoffset":7934,"anchor":"L\u2019environnement","linkAnchor":"L\u2019environnement"},{"toclevel":3,"level":"4","line":"JavaScript \u00ab\u00a0c\u00f4t\u00e9-client\u00a0\u00bb","number":"2.2.1","index":"9","fromtitle":"JavaScript","byteoffset":10526,"anchor":"JavaScript_\u00ab_c\u00f4t\u00e9-client_\u00bb","linkAnchor":"JavaScript_\u00ab_c\u00f4t\u00e9-client_\u00bb"},{"toclevel":3,"level":"4","line":"JavaScript \u00ab\u00a0c\u00f4t\u00e9-serveur\u00a0\u00bb","number":"2.2.2","index":"10","fromtitle":"JavaScript","byteoffset":13211,"anchor":"JavaScript_\u00ab_c\u00f4t\u00e9-serveur_\u00bb","linkAnchor":"JavaScript_\u00ab_c\u00f4t\u00e9-serveur_\u00bb"},{"toclevel":3,"level":"4","line":"Autres environnements","number":"2.2.3","index":"11","fromtitle":"JavaScript","byteoffset":13951,"anchor":"Autres_environnements","linkAnchor":"Autres_environnements"},{"toclevel":2,"level":"3","line":"Le code source","number":"2.3","index":"12","fromtitle":"JavaScript","byteoffset":14734,"anchor":"Le_code_source","linkAnchor":"Le_code_source"},{"toclevel":1,"level":"2","line":"Cadre d\u2019utilisation de JavaScript","number":"3","index":"13","fromtitle":"JavaScript","byteoffset":16497,"anchor":"Cadre_d\u2019utilisation_de_JavaScript","linkAnchor":"Cadre_d\u2019utilisation_de_JavaScript"},{"toclevel":2,"level":"3","line":"JavaScript\u00a0: utilisation de base avec HTML","number":"3.1","index":"14","fromtitle":"JavaScript","byteoffset":16813,"anchor":"JavaScript_:_utilisation_de_base_avec_HTML","linkAnchor":"JavaScript_:_utilisation_de_base_avec_HTML"},{"toclevel":2,"level":"3","line":"JavaScript et HTML5\u00a0: utilisation avanc\u00e9e","number":"3.2","index":"15","fromtitle":"JavaScript","byteoffset":17911,"anchor":"JavaScript_et_HTML5_:_utilisation_avanc\u00e9e","linkAnchor":"JavaScript_et_HTML5_:_utilisation_avanc\u00e9e"},{"toclevel":2,"level":"3","line":"Biblioth\u00e8ques JavaScript","number":"3.3","index":"16","fromtitle":"JavaScript","byteoffset":19178,"anchor":"Biblioth\u00e8ques_JavaScript","linkAnchor":"Biblioth\u00e8ques_JavaScript"},{"toclevel":2,"level":"3","line":"JavaScript Object Notation (JSON)","number":"3.4","index":"17","fromtitle":"JavaScript","byteoffset":19724,"anchor":"JavaScript_Object_Notation_(JSON)","linkAnchor":"JavaScript_Object_Notation_(JSON)"},{"toclevel":2,"level":"3","line":"Node.js\u00a0: JavaScript server-side et dans d'autres contextes","number":"3.5","index":"18","fromtitle":"JavaScript","byteoffset":20450,"anchor":"Node.js_:_JavaScript_server-side_et_dans_d'autres_contextes","linkAnchor":"Node.js_:_JavaScript_server-side_et_dans_d'autres_contextes"},{"toclevel":2,"level":"3","line":"JavaScript en <i>Data Science</i>","number":"3.6","index":"19","fromtitle":"JavaScript","byteoffset":22381,"anchor":"JavaScript_en_Data_Science","linkAnchor":"JavaScript_en_Data_Science"},{"toclevel":2,"level":"3","line":"JavaScript dans d'autres logiciels","number":"3.7","index":"20","fromtitle":"JavaScript","byteoffset":23320,"anchor":"JavaScript_dans_d'autres_logiciels","linkAnchor":"JavaScript_dans_d'autres_logiciels"},{"toclevel":2,"level":"3","line":"JavaScript et les bases de donn\u00e9es","number":"3.8","index":"21","fromtitle":"JavaScript","byteoffset":24018,"anchor":"JavaScript_et_les_bases_de_donn\u00e9es","linkAnchor":"JavaScript_et_les_bases_de_donn\u00e9es"},{"toclevel":1,"level":"2","line":"Avantages de JavaScript","number":"4","index":"22","fromtitle":"JavaScript","byteoffset":24622,"anchor":"Avantages_de_JavaScript","linkAnchor":"Avantages_de_JavaScript"},{"toclevel":1,"level":"2","line":"D\u00e9savantages de JavaScript","number":"5","index":"23","fromtitle":"JavaScript","byteoffset":26604,"anchor":"D\u00e9savantages_de_JavaScript","linkAnchor":"D\u00e9savantages_de_JavaScript"},{"toclevel":1,"level":"2","line":"Bibliographie","number":"6","index":"24","fromtitle":"JavaScript","byteoffset":28662,"anchor":"Bibliographie","linkAnchor":"Bibliographie"}],"tocdata":{"sections":[{"tocLevel":1,"hLevel":2,"line":"Introduction","number":"1","index":"1","fromTitle":"JavaScript","codepointOffset":358,"anchor":"Introduction"},{"tocLevel":2,"hLevel":3,"line":"D\u00e9finition formelle","number":"1.1","index":"2","fromTitle":"JavaScript","codepointOffset":1527,"anchor":"D\u00e9finition_formelle"},{"tocLevel":2,"hLevel":3,"line":"D\u00e9finition informelle","number":"1.2","index":"3","fromTitle":"JavaScript","codepointOffset":2202,"anchor":"D\u00e9finition_informelle"},{"tocLevel":2,"hLevel":3,"line":"Histoire de JavaScript","number":"1.3","index":"4","fromTitle":"JavaScript","codepointOffset":3204,"anchor":"Histoire_de_JavaScript"},{"tocLevel":2,"hLevel":3,"line":"Versions de JavaScript","number":"1.4","index":"5","fromTitle":"JavaScript","codepointOffset":5235,"anchor":"Versions_de_JavaScript"},{"tocLevel":1,"hLevel":2,"line":"Comprendre JavaScript","number":"2","index":"6","fromTitle":"JavaScript","codepointOffset":6428,"anchor":"Comprendre_JavaScript"},{"tocLevel":2,"hLevel":3,"line":"Les fondamentaux du langage","number":"2.1","index":"7","fromTitle":"JavaScript","codepointOffset":7368,"anchor":"Les_fondamentaux_du_langage"},{"tocLevel":2,"hLevel":3,"line":"L\u2019environnement","number":"2.2","index":"8","fromTitle":"JavaScript","codepointOffset":7934,"anchor":"L\u2019environnement"},{"tocLevel":3,"hLevel":4,"line":"JavaScript \u00ab\u00a0c\u00f4t\u00e9-client\u00a0\u00bb","number":"2.2.1","index":"9","fromTitle":"JavaScript","codepointOffset":10526,"anchor":"JavaScript_\u00ab_c\u00f4t\u00e9-client_\u00bb"},{"tocLevel":3,"hLevel":4,"line":"JavaScript \u00ab\u00a0c\u00f4t\u00e9-serveur\u00a0\u00bb","number":"2.2.2","index":"10","fromTitle":"JavaScript","codepointOffset":13211,"anchor":"JavaScript_\u00ab_c\u00f4t\u00e9-serveur_\u00bb"},{"tocLevel":3,"hLevel":4,"line":"Autres environnements","number":"2.2.3","index":"11","fromTitle":"JavaScript","codepointOffset":13951,"anchor":"Autres_environnements"},{"tocLevel":2,"hLevel":3,"line":"Le code source","number":"2.3","index":"12","fromTitle":"JavaScript","codepointOffset":14734,"anchor":"Le_code_source"},{"tocLevel":1,"hLevel":2,"line":"Cadre d\u2019utilisation de JavaScript","number":"3","index":"13","fromTitle":"JavaScript","codepointOffset":16497,"anchor":"Cadre_d\u2019utilisation_de_JavaScript"},{"tocLevel":2,"hLevel":3,"line":"JavaScript\u00a0: utilisation de base avec HTML","number":"3.1","index":"14","fromTitle":"JavaScript","codepointOffset":16813,"anchor":"JavaScript_:_utilisation_de_base_avec_HTML"},{"tocLevel":2,"hLevel":3,"line":"JavaScript et HTML5\u00a0: utilisation avanc\u00e9e","number":"3.2","index":"15","fromTitle":"JavaScript","codepointOffset":17911,"anchor":"JavaScript_et_HTML5_:_utilisation_avanc\u00e9e"},{"tocLevel":2,"hLevel":3,"line":"Biblioth\u00e8ques JavaScript","number":"3.3","index":"16","fromTitle":"JavaScript","codepointOffset":19178,"anchor":"Biblioth\u00e8ques_JavaScript"},{"tocLevel":2,"hLevel":3,"line":"JavaScript Object Notation (JSON)","number":"3.4","index":"17","fromTitle":"JavaScript","codepointOffset":19724,"anchor":"JavaScript_Object_Notation_(JSON)"},{"tocLevel":2,"hLevel":3,"line":"Node.js\u00a0: JavaScript server-side et dans d'autres contextes","number":"3.5","index":"18","fromTitle":"JavaScript","codepointOffset":20450,"anchor":"Node.js_:_JavaScript_server-side_et_dans_d'autres_contextes"},{"tocLevel":2,"hLevel":3,"line":"JavaScript en <i>Data Science</i>","number":"3.6","index":"19","fromTitle":"JavaScript","codepointOffset":22381,"anchor":"JavaScript_en_Data_Science"},{"tocLevel":2,"hLevel":3,"line":"JavaScript dans d'autres logiciels","number":"3.7","index":"20","fromTitle":"JavaScript","codepointOffset":23320,"anchor":"JavaScript_dans_d'autres_logiciels"},{"tocLevel":2,"hLevel":3,"line":"JavaScript et les bases de donn\u00e9es","number":"3.8","index":"21","fromTitle":"JavaScript","codepointOffset":24018,"anchor":"JavaScript_et_les_bases_de_donn\u00e9es"},{"tocLevel":1,"hLevel":2,"line":"Avantages de JavaScript","number":"4","index":"22","fromTitle":"JavaScript","codepointOffset":24622,"anchor":"Avantages_de_JavaScript"},{"tocLevel":1,"hLevel":2,"line":"D\u00e9savantages de JavaScript","number":"5","index":"23","fromTitle":"JavaScript","codepointOffset":26604,"anchor":"D\u00e9savantages_de_JavaScript"},{"tocLevel":1,"hLevel":2,"line":"Bibliographie","number":"6","index":"24","fromTitle":"JavaScript","codepointOffset":28662,"anchor":"Bibliographie"}],"extensionData":[]},"showtoc":"","parsewarnings":[],"displaytitle":"<span class=\"mw-page-title-main\">JavaScript</span>","iwlinks":[{"prefix":"en","url":"http://edutechwiki.unige.ch/en/DHTML","*":"en:DHTML"},{"prefix":"en","url":"http://edutechwiki.unige.ch/en/JSON","*":"en:JSON"},{"prefix":"en","url":"http://edutechwiki.unige.ch/en/LAMP","*":"en:LAMP"},{"prefix":"en","url":"http://edutechwiki.unige.ch/en/WAMP","*":"en:WAMP"}],"properties":[{"name":"PFDefaultForm","*":"tutoriel"}]}}