text: JavaScript est un langage de programmation de scripts principalement employé dans les pages web interactives et à ce titre est une partie essentielle des applications web. Avec les langages HTML et CSS, JavaScript est au cœur des langages utilisés par les développeurs web. Une grande majorité des sites web l'utilisent, et la majorité des navigateurs web disposent d'un moteur JavaScript pour l'interpréter. JavaScript est aussi employé pour les serveurs Web avec l'utilisation (par exemple) de Node.js ou de Deno. JavaScript a été créé en 1995 par Brendan Eich et intégré au navigateur web Netscape Navigator 2.0. L'implémentation concurrente de JavaScript par Microsoft dans Internet Explorer jusqu'à sa version 9 se nommait JScript, tandis que celle d'Adobe Systems se nommait ActionScript. JavaScript a été standardisé sous le nom d'ECMAScript en par Ecma International dans le standard ECMA-262. La version en vigueur de ce standard depuis juin 2022 est la 13 édition. C'est un langage orienté objet à prototype : les bases du langage et ses principales interfaces sont fournies par des objets. Cependant, à la différence d'un langage orienté objets, les objets de base ne sont pas des instances de classes. En outre, les fonctions sont des objets de première classe. Le langage supporte le paradigme objet, impératif et fonctionnel. JavaScript est le langage possédant le plus large écosystème grâce à son gestionnaire de dépendances npm, avec environ 500 000 paquets en . Histoire Début Le langage a été créé en dix jours en mai 1995 pour le compte de la Netscape Communications Corporation par Brendan Eich, qui s'est inspiré de nombreux langages, notamment de Java mais en simplifiant la syntaxe pour les débutants. Brendan Eich a initialement développé un langage de script côté serveur, appelé LiveScript, pour renforcer l'offre commerciale de serveur HTTP. Netscape travaille alors au développement d'une version orientée client de LiveScript. Quelques jours avant sa sortie, Netscape change le nom de LiveScript pour JavaScript. Sun Microsystems et Netscape étaient partenaires, et la machine virtuelle Java de plus en plus populaire. Ce changement de nom servait les intérêts des deux sociétés. Le Netscape et Sun Microsystems annoncent la sortie de JavaScript, décrit comme un complément à Java, dans un communiqué de presse commun. Cette initiative a contribué à créer auprès du public une certaine confusion entre les deux langages, proches syntaxiquement mais pas du tout dans leurs concepts fondamentaux, et qui perdure encore de nos jours. En , Netscape met en œuvre le moteur JavaScript dans son navigateur web Netscape Navigator 2.0. Le succès de ce navigateur contribue à l'adoption rapide de JavaScript dans le développement web orienté client. Microsoft réagit alors en développant JScript, qu'il inclut ensuite dans Internet Explorer 3.0 en pour la sortie de son navigateur. « JavaScript » devient une marque déposée par Sun Microsystems aux États-Unis en . Standardisation Netscape soumet alors JavaScript à Ecma International pour standardisation. Version 1 : Naissance du standard ECMA-262 Les travaux débutent en et se terminent en , donnant naissance à la du standard ECMA-262 qui spécifie le langage ECMAScript d'où le fait que le n° ou l'année de la version est souvent précédée par ECMAScript ou en abrégé ES. Le standard est ensuite soumis à l'ISO/CEI et publié en en tant que standard international ISO/CEI 16262. Version 2 : Homogénéisation avec le standard ISO/CEI 16262 Des changements rédactionnels sont apportés au standard ECMA-262 pour le conformer au standard international ISO/CEI 16262, aboutissant à la du standard ECMA-262 en . Version 3 : Améliorations et constitution du langage La du standard ECMA-262 introduit : des expressions rationnelles plus puissantes ; une amélioration de la manipulation des chaînes de caractères ; de nouvelles instructions de contrôle ; une gestion des exceptions avec les instructions try/catch ; le formatage des nombres. Elle est publiée par Ecma International en puis soumise à l'ISO/CEI qui publie le standard international ISO/CEI 16262:2002 en . Après la publication de la s'ensuit une adoption massive par tous les navigateurs Web. Version 4 : L'étape inachevée Un travail important est entrepris pour développer la du standard ECMA-262, mais il ne sera pas achevé et cette édition ne verra jamais le jour. Cependant une partie du développement effectué sera intégrée à la . Version 5 : Désambiguïsation et nouvelles fonctionnalités La du standard ECMA-262 clarifie les ambiguïtés de la et introduit les accesseurs, l'introspection, le contrôle des attributs, des fonctions de manipulation de tableaux supplémentaires, le support du format JSON et un mode strict pour la vérification des erreurs. Elle est publiée par Ecma International en puis soumise à l'ISO/CEI qui apporte des corrections mineures et publie le standard international ISO/CEI 16262:2011 en . L'édition 5.1 du standard ECMA-262 reprenant à l'identique le texte du standard international ISO/CEI 16262:2011 est publiée à la même date. Version 6 (ES6) - ECMAScript 2015 : Amélioration du support et des fonctionnalités Bien que le développement de la du standard ECMA-262 ait commencé officiellement en 2009, peu avant la publication de la , sa publication en est en réalité l'aboutissement de 15 ans de travail depuis la publication de la en 1999. Le but de cette est d'apporter un meilleur support pour les applications d'envergure, la création de bibliothèques et l'utilisation d'ECMAScript comme cible de compilation pour d'autres langages. Cette édition introduit notamment les modules, les classes, la portée lexicale au niveau des blocs, les itérateurs et les générateurs, les promesses pour la programmation asynchrone, les patrons de déstructuration, l'optimisation des appels terminaux, de nouvelles structures de données (tableaux associatifs, ensembles, tableaux binaires), le support de caractères Unicode supplémentaires dans les chaînes de caractères et les expressions rationnelles et la possibilité d'étendre les structures de données prédéfinies. À partir de cette version, l'intitulé officiel de la version est ECMAScript 2015 (année de parution). Version 7 - ECMAScript 2016 : une adaptation permanente aux outils du web La du standard ECMA-262 est la première édition issue du nouveau processus de développement ouvert et du rythme de publication annuel adoptés par le comité Ecma TC39. Un document au format texte est créé à partir de la et est mis en ligne sur GitHub comme base de développement pour cette nouvelle édition. Après la correction de milliers de bugs et d'erreurs rédactionnelles ainsi que l'introduction de l'opérateur d'exponentiation et d'une nouvelle méthode pour les prototypes de tableaux, la est publiée en . Version 8 (ES8) - ECMAScript 2017: Asynchronicité L'apport majeur concerne les fonctions asynchrones. On retrouve également : Le partage de mémoire entre différents fil d'exécution et workers (Shared memory and atomics) Les fonctions Object.values() et Object.entries() qui permettent de faciliter la manipulation des objets. L'édition actuelle du standard ECMA-262 est la 13ème édition publiée en juin 2022. Sécurité JavaScript et la structure DOM des pages HTML/XML ont quelques failles de sécurité. En effet, des scripts malveillants peuvent se cacher dans le code d'une page web et s'exécuter sur l'ordinateur cible de l'utilisateur du Web. Les fournisseurs de navigateurs web tentent de réduire ce risque avec deux restrictions : l'une est de faire exécuter ces scripts dans un espace à part des autres données (sandbox) dans lequel seules des actions relatives au web (mouvements de souris, affichage de pixel, communications) peuvent être exécutées, sans avoir accès au système de fichier principal ; la deuxième est de n'exécuter les scripts que selon les contraintes de same-origin policy : dans cet esprit, un site Web ne doit pas avoir accès aux informations telles que les noms d'utilisateur et mot de passe ou cookies reçus des autres sites visités. Les vulnérabilités de JavaScript sont bien souvent des brèches d'au moins l'un de ces deux principes. Certains sous-ensembles du langage Javascript tels que JavaScript—ADsafe ou Secure ECMAScript (SES) fournissent de plus grands niveaux de sécurité, en particulier pour les scripts créés par des tierces parties (notamment les publicités). Caja est un autre logiciel pour inclure et isoler de manière sécurisée du JavaScript et du HTML tierce partie. La Politique de sécurité du contenu est la principale méthode destinée à assurer que seul un script de confiance est exécuté sur une page Web. Meltdown est une vulnérabilité indépendante de Javascript, qui peut notamment être exploitée en Javascript. Concepts de programmation Le propos de JavaScript est de manipuler de façon simple des objets, au sens informatique, fournis par une application hôte. Par exemple dans un navigateur web, un script écrit en javascript peut être utilisé pour apporter une touche interactive ou dynamique à un applicatif (page ou site web), qui sans cela serait une page statique figée. Le langage Javascript permet par exemple d'écrire des scripts pour afficher ou cacher un paragraphe, une image ou un popup, selon les interactions de l'utilisateur, ou d'informer le serveur du temps passé à lire une page. Hello world Il est possible dans un script en langage Javascript, d'afficher le texte hello world sur la console de debug de l’application. Ceci peut être utilisé par des développeurs en phase de mise au point. : window.console.log('Hello world'); window.console.exp(hello world) // ou global.console.log('Hello world'); window.console.log(hello world) Dans une application hôte d'un navigateur, console est une des méthodes de l'objet global window. Dans d'autres applications hôtes comme Node.js, l'objet global est global. Les méthodes de l'objet global étant accessibles sans préfixe, window et global sont facultatifs. La syntaxe console.log('Hello world'); aura donc exactement le même résultat en plus d'être compatible sur tous les environnements. Utilisation Le code JavaScript a besoin d'un objet global pour y rattacher les déclarations (variables et fonctions) avant d'exécuter des instructions. La situation la plus connue est celle de l'objet window obtenu dans le contexte d'une page web. D'autres environnements sont possibles dont celui fourni par Adobe ou l'environnement Node.js (voir plus bas Autres utilisations). Les principaux domaines d'application de JavaScript sont avant tout la programmation, les activités de programmation de base et tout ce qui est lié à l'informatique. Mais la gestion de bases de données requiert également des compétences JavaScript de base. Dans une page web Du code JavaScript peut être intégré directement au sein des pages web, pour y être exécuté sur le poste client. C'est alors le navigateur web qui prend en charge l'exécution de ces programmes appelés scripts. Généralement, JavaScript sert à contrôler les données saisies dans des formulaires HTML, ou à interagir avec le document HTML via l'interface Document Object Model, fournie par le navigateur (on parle alors parfois de HTML dynamique ou DHTML). Il est aussi utilisé pour réaliser des applications dynamiques, des transitions, des animations ou manipuler des données réactives, à des fins ergonomiques ou cosmétiques. JavaScript n'est pas limité à la manipulation de documents HTML et peut aussi servir à manipuler des documents SVG, XUL et autres dialectes XML. Incompatibilité Netscape et Microsoft (avec JScript dans Internet Explorer jusqu'à la version 9) ont développé leur propre variante de ce langage qui chacune supporte presque intégralement la norme ECMAScript mais possède des fonctionnalités supplémentaires et incompatibles, rarement utilisées dans le cadre de la programmation de pages web. Pourtant les scripts JavaScript sont souvent la source de difficultés. Elles sont plus souvent dues à la prise en charge des différentes versions des modèles d'objets (DOM) fournis par les navigateurs, qu'à des problèmes de portabilité du langage (les différentes mises en œuvre respectant relativement bien la norme ECMAScript). Pour vérifier dynamiquement si un objet (dans la version JavaScript utilisée lors de l'interprétation) possède bien une méthode, on utilise souvent une construction du type : if (monObjet.methode && typeof monObjet.methode === 'function') { monObjet.methode(); } On vérifie ainsi que monObjet a bien une mise en œuvre de methode que l'on peut alors utiliser. Le plus souvent, si un navigateur ne gère pas la methode de monObjet, il gère une méthode comparable methode2, et on peut alors adapter le code JavaScript au navigateur qui l'exécute : if (typeof monObjet.methode === 'function') { monObjet.methode(); } else if (typeof monObjet.methode2 === 'function') { monObjet.methode2(); } Une autre méthode consiste à vérifier, côté serveur, le navigateur utilisé par le client et d'envoyer le code correspondant. Cela n'est toutefois pas recommandable, car il est largement préférable de tester directement l'existence, le comportement d'une fonction, d'une propriété plutôt que de faire des présomptions basées sur la détection du navigateur. Ajax Ajax (de l'anglais ) est un ensemble de techniques découplant l'échange de données entre le navigateur et le serveur web de l'affichage d'une page web, ce qui permet de modifier le contenu des pages web sans les recharger. Grâce à l'objet JavaScript XMLHTTPRequest, cette méthode permet d'effectuer des requêtes HTTP sur le serveur web depuis le navigateur web, et permet également de traiter les réponses HTTP du serveur web pour modifier le contenu de la page web. La réponse était en général au format XML qui tend aujourd'hui à être remplacé par le format JSON qui a l'avantage d'être natif en JavaScript. Le script manipule l'ensemble d'objets DOM qui représente le contenu de la page web. Les technologies XMLHTTPRequest, XML et DOM ont été ajoutées aux navigateurs web entre 1995 et 2005. La méthode Ajax permet de réaliser des applications Internet riches, offrant une maniabilité et un confort supérieur ; c'est un des sujets phares du mouvement Web 2.0. JSON JSON () est un format utilisant la notation des objets JavaScript pour transmettre de l'information structurée, d'une façon plus compacte et plus proche des langages de programmation, que XML. Malgré l'existence du DOM et l'introduction récente de E4X (voir ci-dessous) dans la spécification du langage JavaScript, JSON reste le moyen le plus simple d'accéder à des données, puisque chaque flux JSON n'est rien d'autre qu'un objet JavaScript sérialisé. De plus, malgré son lien historique (et technique) avec JavaScript, JSON reste un format de données structurées, et peut être utilisé facilement par tous les langages de programmation. Depuis 2009, les navigateurs commencent à intégrer un support natif du format JSON, ce qui facilite sa manipulation, la sécurité (contre l'évaluation de scripts malveillants inclus dans une chaine JSON), et la rapidité de traitement. Ainsi les navigateurs Firefox et IE l'intègrent respectivement dès les versions 3.5 et 8. Exemple de JSON : { "clef1": "valeur", "clef2": 12345, "clef3": true, "clef4": { "clef5": "valeur" } } La structure est organisée par clef/valeurs. Les clefs doivent être entre guillemets doubles. Les valeurs peuvent être : une string (chaîne de caractères entre guillemets doubles) un nombre un booléen (true ou false pour vrai ou faux) une structure clef/valeur Un JSON valide ne peut pas comporter de commentaires. Il existe des validateurs de JSON en ligne. Autres utilisations Sur un serveur web JavaScript peut également être utilisé comme langage de programmation sur un serveur HTTP à l'image des langages comme PHP, ASP, etc. D'ailleurs le projet CommonJS travaille dans le but de spécifier un écosystème pour JavaScript en dehors du navigateur (par exemple sur le serveur ou pour les applications de bureau natives). Le projet a été lancé par Kevin Dangoor en . Le projet CommonJS n'est pas affilié avec le groupe de l'Ecma International TC39 travaillant sur ECMAScript, mais certains membres du TC39 participent au projet. Historiquement, JavaScript était proposé sur les serveurs de Netscape, par la suite distribués par Sun Microsystems sous les noms iPlanet et Sun ONE, mais JScript peut aussi être utilisé sur les serveurs Internet Information Services de Microsoft. JScript peut d'ailleurs servir pour scripter une plate-forme Microsoft Windows via Windows Scripting Host (WSH). Il existe par ailleurs des projets indépendants et Open Source d'implémentation de serveurs en JavaScript. Parmi eux, on pourra distinguer Node.js, une plateforme polyvalente de développement d'applications réseau se basant sur le moteur JavaScript V8 et les spécifications CommonJS. Autres supports ActionScript, utilisé dans Adobe Flash, est aussi une mise en œuvre d'ECMAScript. Il permet de manipuler tous les éléments de l'animation, considérés comme des objets. JavaScript peut être utilisé pour scripter d'autres applications Adobe (Photoshop, Illustrator, ...), ce qui permet d'avoir des scripts indépendants de la plate-forme (Microsoft Windows, Apple OSX, Linux...). JavaScript est enfin utilisé dans la plate-forme de développement de Mozilla, sur laquelle sont basés plusieurs logiciels comme des navigateurs Web, pour des tâches relatives à l'interface utilisateur et à la communication interne (ex. : les extensions de Firefox et Thunderbird sont installées à base de fichiers XPI utilisant le JavaScript. Voir aussi Prefs.js). Depuis 2004, l'objet js de l'environnement de programmation graphique Max/MSP permet d'ouvrir une fenêtre pour programmer en JavaScript, au sein même d'un programme Max/MSP. Les logiciels ImageJ et CaRMetal sont munis de consoles JavaScript, qui leur permettent d'écrire des scripts dans un contexte graphique. Algobox utilise JavaScript pour la syntaxe de ses fonctions. H5P se sert de HTML5 et Javascript pour faciliter la création de contenus interactifs en ligne. JavaScript est aussi utilisé dans un contenu BIFS pour l'exploitation des événements. Pour cela la spécification BIFS fournit un nœud Script pour incorporer de l'ECMAScript. La suite bureautique OpenOffice.org permet d'utiliser JavaScript comme langage de macros. JavaScript est aussi utilisable en shell ou avec les gadgets Vista. Le format graphique vectoriel SVG incorpore le langage ECMAscript pour créer des graphiques interactifs directement exploitable dans un navigateur. Enfin, JavaScript est également utilisé pour dynamiser le QML de la bibliothèque graphique Qt. Particularités du langage Liaison des identifiants En JavaScript, toutes les expressions (identifiants, littéraux et opérateurs et leurs opérandes) sont de type référence (comme en Python et Ruby, mais à la différence du C++, Java, C#, Swift et OCaml qui possèdent aussi des expressions de type valeur), c'est-à-dire que leur évaluation ne produit pas une donnée directement mais une référence vers une donnée. La référence se nomme le référent de l’expression et la donnée le référé de l’expression. En JavaScript, l'affectation d'une variable modifie son référent, autrement dit, elle lie la variable à une autre donnée : on parle de changement de liaison de la variable (en anglais variable rebinding).var maVariable1 = 0; // lie `maVariable1` à une donnée de valeur 0 var maVariable2 = maVariable1; // lie `maVariable2` à la donnée liée à `maVariable1` maVariable1++; // équivalent à `maVariable1 = maVariable1 + 1;`, relie `maVariable1` à une nouvelle donnée de valeur maVariable1 + 1 (affectation) juin alert(maVariable1); // affiche 1 alert(maVariable2); // affiche 0 var maVariable3 = [1, 2, 3]; // lie `maVariable3` à une donnée de valeur [1, 2, 3] var maVariable4 = maVariable3; // lie `maVariable4` à la donnée liée à `maVariable3` maVariable3 = [4, 5, 6]; // relie `maVariable3` à une nouvelle donnée de valeur [4, 5, 6] (affectation) alert(maVariable3); // affiche [4, 5, 6] alert(maVariable4); // affiche [1, 2, 3] var maVariable5 = [1, 2, 3]; // lie `maVariable5` à une donnée de valeur [1, 2, 3] var maVariable6 = maVariable5; // lie `maVariable6` à la donnée liée à `maVariable5` maVariable5.push(4); // modifie la donnée liée à `maVariable5` et `maVariable6` alert(maVariable5); // affiche [1, 2, 3, 4] alert(maVariable6); // affiche [1, 2, 3, 4] Portée lexicale des variables La portée lexicale d'une variable est la partie d'un programme où la liaison entre son identifiant et sa donnée est valide. En JavaScript, la portée lexicale d'une variable peut être de deux types, selon le mot-clé utilisé pour la déclarer : var : au niveau de la fonction (ou de l'espace global) où elle est déclarée (comme en Python, Ruby) ; let ou const (introduits dans ECMAScript 6) : au niveau du bloc où elle est déclarée (comme en C++, Java, C#) — une fonction étant un bloc particulier. Depuis le support de let par les navigateurs modernes, var ne doit plus être utilisé et son utilisation est considéré comme une mauvaise pratique.// 1. Déclaration dans un bloc if (true) { // début du bloc var maVariable1; // déclaration de la variable let maVariable2; // déclaration de la variable const maVariable3; // déclaration de la variable } // fin du bloc mais pas de la portée de maVariable1 alert(maVariable1); // ne soulève pas d'erreur alert(maVariable2); // erreur : la variable est hors de sa portée alert(maVariable3); // erreur : la variable est hors de sa portée // 2. Déclaration dans une fonction function maFunction() { // début de la fonction var maVariable4; // déclaration de la variable let maVariable5; // déclaration de la variable const maVariable6; // déclaration de la variable } // fin de la fonction et de la portée des variables alert(maVariable4); // erreur : la variable est hors de sa portée alert(maVariable5); // erreur : la variable est hors de sa portée alert(maVariable6); // erreur : la variable est hors de sa portée Une variable peut être affectée ou masquée par une fonction enfant de la fonction (ou de l'espace global) où elle est déclarée : var maVariable1 = 0; // définition de la variable parente // 1. Affectation function maFonction1() { // fonction enfant maVariable1 = 1; // affectation de la variable parente } alert(maVariable1); // affiche 0 maFonction1(); // affecte la variable parente alert(maVariable1); // affiche 1 // 2. Masquage var maVariable2 = 0; // définition de la variable parente function maFonction2() { // fonction enfant var maVariable2; // déclaration de la variable enfant masquant la variable parente maVariable2 = 1; // affectation de la variable enfant } alert(maVariable2); // affiche 0 maFonction2(); alert(maVariable2); // affiche 0 Déclaration des variables En JavaScript, quel que soit le lieu de la déclaration d'une variable dans sa portée lexicale, la variable est créée au début de l'évaluation de sa portée lexicale. Les variables déclarées avec le mot-clé var sont en plus pré-initialisées à la valeur undefined lors de leur création, et donc accessibles dès le début de leur portée lexicale. On parle de remontée de la variable (variable hoisting en anglais) car cela se passe comme si la déclaration de la variable était remontée au début de sa portée lexicale :alert(maVariable); // affiche undefined var maVariable = 0; alert(maVariable); // affiche 0Les variables déclarées avec le mot-clé let ou const (ECMAScript 6) ne sont pas pré-initialisées, et donc inaccessibles avant leur déclaration. Si une variable déclarée avec le mot-clé let ne possède pas d'initialiseur, elle est initialisée à la valeur undefined lors de l'évaluation de la déclaration, sinon elle est initialisée avec l'initialiseur lors de l'évaluation de la déclaration. Si une variable déclarée avec le mot-clé const ne possède pas d'initialiseur, une erreur est levée lors de l'évaluation de la déclaration, sinon elle est initialisée avec l'initialiseur lors de l'évaluation de la déclaration : // 1. Avec initialiseur alert(maVariable1); // erreur : accès impossible avant l'initialisation alert(maVariable2); // erreur : accès impossible avant l'initialisation let maVariable1 = 5; const maVariable2 = 8; alert(maVariable1); // affiche 5 alert(maVariable2); // affiche 8 // 2. Sans initialiseur alert(maVariable3); // erreur : accès impossible avant l'initialisation alert(maVariable4); // erreur : accès impossible avant l'initialisation let maVariable3; const maVariable4; // erreur : initialisation manquante alert(maVariable3); // affiche undefined alert(maVariable4); // erreur : initialisation manquante De plus, JavaScript autorise la redéclaration de la même variable dans sa portée lexicale, mais uniquement avec le mot-clé var :var maVariable = 2; var maVariable = 9; Variables globales En JavaScript, il existe plusieurs façons de déclarer une variable globale, et certaines interagissent avec l'objet global (nommé window dans les navigateurs) : var maVariable1 = 0; // propriété ou méthode de l'objet global qui ne peut pas être détruite par l'opérateur delete let maVariable2 = 0; // pas une propriété ou méthode de l'objet global const maVariable3 = 0; // pas une propriété ou méthode de l'objet global maVariable4 = 0; // propriété ou méthode de l'objet global qui peut être détruite par l'opérateur delete window.maVariable5 = 0; // propriété ou méthode de l'objet global qui peut être détruite par l'opérateur delete this.maVariable6 = 0; // propriété ou méthode de l'objet global qui peut être détruite par l'opérateur delete Une variable initialisée sans déclaration est traitée comme une variable globale : function maFonction() { maVariable = 5; } maFonction(); alert(maVariable); // affiche 5 Fonctions anonymes Les fonctions anonymes sont, comme leur nom l'indique, des fonctions qui ne portent pas de nom : setTimeout(function () { alert('Trois secondes se sont écoulées.'); }, 3000); Celle-ci est donnée en paramètre à la fonction setTimeout, qui permet de définir une durée avant d'afficher le message. Fermetures lexicales Un environnement lexical est l'ensemble des variables valides dans une partie du programme. Il est composé de l'environnement lexical interne (les variables locales) et d'une référence à l'environnement lexical externe (les variables non locales). Une fermeture lexicale (lexical closure en anglais) est une fonction accompagnée de son environnement lexical externe, c'est-à-dire de l'ensemble des variables non locales qu'elle a capturé, soit par valeur (conservation d'une copie de chaque donnée liée aux variables non locales), soit par référence (conservation d'une référence à chaque donnée liée aux variables non locales). Comme en JavaScript toutes les variables sont de type référence (cf. la section Liaison des identifiants), JavaScript n'utilise que la capture par référence — ce qui correspond en C++ 11 à la syntaxe [&](...) { ... }; —, et la durée de vie des variables non locales capturées par une fonction est étendue à la durée de vie de la fonction — ce qui n'est pas le cas en C++ 11, quel que soit le type de capture : function maFonction() { var maVariable = 4; // variable parente return function () { alert(maVariable); } } var maFermeture = maFonction(); // capture de la variable parente par référence maFermeture(); // affiche 4 Expressions de fonctions immédiatement invoquées Jusqu'à ECMAScript 6, JavaScript ne proposait pas nativement de portée des variables au niveau des blocs (pas de mots-clé let ou const), ni de modules. Pour éviter de polluer l'espace global, une méthode consistait à encapsuler son code dans une fonction pour s'appuyer sur la portée des variables qui a lieu au niveau des fonctions en JavaScript, puis à invoquer cette fonction juste après. Pour regrouper les deux étapes (définition de la fonction et invocation) et ne pas ajouter un nom de fonction supplémentaire dans l'espace global, le langage permet les expressions de fonctions immédiatement invoquées (EFII ; en anglais immediately-invoked function expressions, IIFE). Plusieurs syntaxes sont possibles pour ce type d'expression, les plus répandues étant : (function (...) { ... }(...)); (syntaxe recommandée par Douglas Crockford pour sa lisibilité) ; (function (...) { ... })(...); L'opérateur d'invocation de fonction () à la fin permet l'exécution immédiate de la fonction. Les parenthèses en gras indiquent à l'analyseur syntaxique qu'elles contiennent une expression, car en JavaScript les parenthèses ne peuvent pas contenir de déclaration. Autrement, dans la plupart des situations, le mot clé function est traité comme une déclaration de fonction, et pas comme une expression de fonction. Il existe d'autres façons pour forcer une expression de fonction : !function (...) { ... }(...); ~function (...) { ... }(...); -function (...) { ... }(...); +function (...) { ... }(...); Dans les contextes où une expression est attendue il n'est pas nécessaire d'utiliser les parenthèses en gras : var maVariable = function (...) { ... }(...); true && function (...) { ... }(...); 0, function (...) { ... }(...); Une utilisation importante des expressions de fonctions immédiatement invoquées est pour la création de modules. Les modules permettent à la fois de rassembler des propriétés et des méthodes dans un espace de nom et de rendre certains membres privés : var compteur = (function () { var i = 0; // propriété privée return { // méthodes publiques obtenir: function () { alert(i); }, mettre: function (valeur) { i = valeur; }, incrementer: function () { alert(++i); } }; })(); // module compteur.obtenir(); // affiche 0 compteur.mettre(6); compteur.incrementer(); // affiche 7 compteur.incrementer(); // affiche 8 compteur.incrementer(); // affiche 9 Prototypes Les prototypes sont des objets utilisés lors d'un échec de résolution de nom. Ce mécanisme est un type d'héritage : l'héritage par prototype. En JavaScript, tout objet possède un prototype, accessible via la méthode Object.getPrototypeOf (ou via la propriété historique __proto__ standardisée dans ECMAScript 6 pour assurer la compatibilité entre les navigateurs mais non recommandée). De plus, l'opérateur new permet de transformer l'invocation d'une fonction constructeur en un objet (instanciation) dont le prototype est égal à la propriété prototype de la fonction constructeur : function MonConstructeur() { this.maPropriete1 = 3; } const monInstance = new MonConstructeur(); alert(monInstance.maPropriete1); // affiche 3 alert(Object.getPrototypeOf(monInstance) === MonConstructeur.prototype); // affiche true MonConstructeur.prototype.maPropriete2 = 5; alert(monInstance.maPropriete2); // affiche 5 Toute instance de MonConstructeur (monInstance ici) possède un prototype égal à MonConstructeur.prototype. Lors de l'utilisation d'une propriété ou d'une méthode d'une instance de MonConstructeur (monInstance.maPropriete1 et monInstance.maPropriete2 ici), si l'instance ne possède pas la propriété ou la méthode recherchée, la recherche se poursuit dans le prototype de l'instance (MonConstructeur.prototype ici). Si la recherche échoue aussi avec cet objet, la recherche se poursuit dans le prototype de cet objet, et ainsi de suite jusqu'à arriver à la première fonction constructeur. Si la recherche échoue encore, cette première fonction constructeur étant une fonction donc une instance de la fonction constructeur Function du langage, la recherche se poursuit dans son prototype qui est égal à Function.prototype. Si la recherche échoue à nouveau, Function.prototype étant un objet donc une instance de la fonction constructeur Object du langage, la recherche se poursuit dans son prototype qui est égal à Object.prototype. Si la recherche échoue cette fois, comme le prototype de Object.prototype est égal à null, la recherche s'arrête et JavaScript génère une erreur de résolution de nom. Ce mécanisme de recherche parcourt ce qu'on appelle la chaîne de prototypes. Le code de l'opérateur instanceOf illustre bien ce mécanisme. A instanceOf B (ou de manière équivalente : instanceOf.call(A, B)) renvoie true si A est une instance de B, c'est-à-dire si B.prototype est trouvé dans le chaîne de prototypes de A, et false sinon : function instanceOf(f) { let o = this; while (o !== null) { o = Object.getPrototypeOf(o); if (o === f.prototype) { return true; } } return false; } Par ailleurs, la méthode Object.create introduite dans ECMAScript 5 permet d'éviter d'utiliser directement les fonctions constructeurs, leurs propriétés prototype et l'opérateur new, pour ne travailler qu'avec des objets. L'utilisation de cette méthode simplifie grandement la complexité du code et est donc recommandée. La méthode Object.create est définie par if (typeof Object.create !== 'function') { Object.create = function (o) { function F() {} F.prototype = o; return new F(); }; } L'exemple précédent peut alors être réécrit const MonObjet = { function initialiser() { this.maPropriete1 = 3; } } const monInstance = Object.create(MonObjet); monInstance.initialiser(); alert(monInstance.maPropriete1); // affiche 3 MonObjet.maPropriete2 = 5; alert(monInstance.maPropriete2); // affiche 5 Séparation des instructions En C, chaque instruction se termine par un point-virgule. Cette pratique a fait du point-virgule une obligation dans de nombreux langages inspirés de la syntaxe du C. JavaScript est plus souple, permettant à une fin de ligne de marquer implicitement la fin d'une instruction. Le but est de faciliter l'usage du langage aux personnes inexpérimentées en programmation informatique. Mais cette souplesse introduit des effets inattendus :return true;Le parseur comprend cela comme deux instructions : return; true;Les expressions de fonctions immédiatement invoquées lorsque le programmeur s'appuie sur les fins d'instruction implicites rencontrent également ce genre de problème avec l'usage des parenthèses : maVariable1 = maVariable2 + maVariable3 (function () { // code })()est traité commemaVariable1 = maVariable2 + maVariable3(function () { /* code */ })();Les ouvrages de programmation avancés en JavaScript mettent en garde contre les effets inattendus de la déduction automatique de fin d'instruction et conseillent d'écrire un point-virgule à la fin de chaque instruction, ce qui n'empêche pas les surprises lorsqu'on oublie le point-virgule, d'autant plus quand la compression du code impose le retrait des retours chariot. Annexes Articles connexes Syntaxe JavaScript Moteur JavaScript Spécification de JavaScript jQuery DataTables TypeScript Liens externes Standard ECMA-262, ECMAScript 2016 Language Specification Mozilla Developer Center - JavaScript Microsoft MSDN - JScript Exemples d'utilisation avancée du langage JavaScript Open Directory - JavaScript JavaScript éloquent, Une introduction au langage de programmation JavaScript et à la programmation en général. JSFiddle pour tester vos codes JavaScript obfuscator Javascript Deobfuscator Notes et références Langage de script Langage orienté objet Langage pour pages Web dynamiques Technologie web


source: wikipedia

text: Jacques Tardi, né le à Valence (Drôme), est un auteur de bande dessinée et illustrateur français. Son œuvre, traduite en plusieurs langues, lui a valu une certaine notoriété et une reconnaissance critique au-delà même du monde de la bande dessinée. Lauréat du grand prix de la ville d'Angoulême en 1985 et du prix Saint-Michel, en 1977 et 1979, il a reçu de nombreuses autres récompenses, dont trois autres prix du festival d'Angoulême, deux prix Max et Moritz (Allemagne) et deux prix Eisner (États-Unis). Il est surtout connu pour Les Aventures extraordinaires d'Adèle Blanc-Sec, série inspirée par le roman-feuilleton de la Belle Époque, son travail sur la Première Guerre mondiale (C'était la guerre des tranchées), et ses adaptations des romans de Nestor Burma. Biographie Enfance et études Né le à Valence, Jacques Tardi passe son enfance dans l'Allemagne d'après guerre avec son père, militaire de carrière. Il fait ses études à l'École des Beaux-Arts de Lyon, puis à l'École des Arts décoratifs de Paris. Il dessine sa première bande dessinée en 1958-1959, après la découverte des albums d'Edgar P. Jacobs : La Marque verte, en référence au sixième album de Blake et Mortimer, La Marque Jaune. Carrière À partir de 1970, Tardi collabore à Pilote pour de courts récits écrits par Jean Giraud et Serge de Beketch. Pour ce même magazine, il dessine en 1972 Rumeurs sur le Rouergue sur un scénario de Pierre Christin (édité en album broché par Futuropolis en 1976) ainsi que Adieu Brindavoine. En 1973, il dessine des westerns de Claude Verrien puis, en 1974, Le Démon des glaces et La Véritable Histoire du soldat inconnu. Il collabore ensuite pour plusieurs périodiques : Libération, Charlie Mensuel, L'Écho des savanes, Ah ! Nana, Métal Hurlant... En 1976, Tardi s'associe à Picaret pour Polonius et, à la demande de son éditeur Casterman, il commence une série qu'il poursuit jusqu'en 2022 : Les Aventures extraordinaires d'Adèle Blanc-Sec. En 1979, il publie le livre Ici Même scénarisé par Jean-Claude Forest, prépublié l’année précédente dans À suivre. En 1982, il commence une autre grande série, celle des adaptations de Nestor Burma de Léo Malet avec Brouillard au pont de Tolbiac. À la fin des années 1980, il illustre chez Futuropolis, en collaboration avec les éditions Gallimard, trois des principaux romans de Louis-Ferdinand Céline, dont Voyage au bout de la nuit . À la fin des années 1990, il crée le feuilleton radiophonique Le Perroquet des Batignolles avec Michel Boujut, diffusé en 1997 sur France Inter. En , il publie chez Futuropolis une adaptation du roman de Jean-Patrick Manchette, La Position du tireur couché. En 2012, il publie Moi, René Tardi, prisonnier de guerre au Stalag II-B, à partir des souvenirs de la captivité de son père durant la Seconde Guerre mondiale. Nommé chevalier de la Légion d'honneur en 2013, il refuse cette distinction en indiquant ne vouloir « rien recevoir, ni du pouvoir actuel, ni d'aucun autre pouvoir politique quel qu'il soit ». Jacques Tardi est décrit en 2018 comme . Selon Patrick Gaumer, il fait partie des . Engagement militant Le , il est parmi les signataires de lAppel des 58 : « Nous manifesterons pendant l'état d'urgence ». En , Jacques Tardi est signataire d’une pétition en collaboration avec des personnalités issues du monde de la culture pour boycotter la saison culturelle croisée "France-Israël", qui selon l'objet de la pétition sert de « vitrine » à l'État d'Israël au détriment du peuple palestinien. En , il cosigne une tribune dans le Guardian en soutien des artistes palestiniens ayant appelé à boycotter l'édition 2019 du concours de l'Eurovision qui doit se tenir en Israël. En 2019, il cosigne dans Mediapart un appel au boycott de l'Eurovision à Tel Aviv. Il participe régulièrement à des évènements de soutien à la librairie anarchiste Le Jargon Libre, tenue par son amie Hellyette Bess. Vie privée Jacques Tardi est marié avec la chanteuse et traductrice Dominique Grange depuis le ; ils ont quatre enfants. Style et thématiques L'œuvre de Tardi présente des thèmes récurrents comme les faubourgs de Paris, les anars, quelques monstres, des soldats et la guerre, et, partout, la misère, la révolte... De ses choix d'auteurs (adaptés, illustrés comme Céline, Daniel Pennac, Jean Vautrin, Léo Malet...) se dégagent des cohérences affectives, imaginaires, mais aussi politiques. Son style peut sembler proche de la ligne claire de Hergé, mais les ouvrages de Jacques Tardi ont une nette tendance à ridiculiser le concept du « héros », ses personnages peuvent être des antihéros complets, des victimes de la marche du monde sans prise (sauf accidentelle) sur celui-ci, voire de simples témoins refusant d'agir autrement que pour leur propre compte. Première Guerre mondiale La Première Guerre mondiale est un événement omniprésent dans l'œuvre de Tardi. Toute l'œuvre de Tardi est ponctuée d'albums qui lui sont directement consacrés (La véritable histoire du soldat inconnu, Le Trou d'obus, Où vas-tu petit soldat ?, C'était la guerre des tranchées), ou dont l'action se situe en amont ou en aval de cette période (Adieu Brindavoine, et les aventures d’Adèle Blanc-Sec, lesquelles débutent avant la guerre et reprennent après la guerre). On note toutefois une évolution : les premiers ouvrages utilisent la guerre comme un support, un fond pour raconter une histoire de bande dessinée tandis que les ouvrages plus récents sur ce thème sont plus historiographiques, exposant crûment la chronologie et les faits de la « der des ders ». Son travail sur la Première Guerre mondiale, notamment C'était la guerre des tranchées et Putain de guerre !, est reconnu comme exceptionnel, pour sa qualité artistique, sa force expressive et sa grande rigueur historique (grâce à la collaboration avec l'historien Jean-Pierre Verney). Une exposition de planches originales, au festival d’Angoulême, a d'ailleurs été consacrée à cette partie de l’œuvre de Tardi. Pour finir, certains des détracteurs de son œuvre lui reprochent son aspect . De fait, Tardi dénonce régulièrement, à travers ses personnages, leurs discours et les péripéties auxquelles ils sont mêlés, les notions de patriotisme et de nationalisme, les jugeant responsables de toutes les turpitudes et violences interétatiques du . Seconde Guerre mondiale La Seconde Guerre mondiale est aussi présente dans l'œuvre de Tardi : en tant que toile de fond dans les albums des années 1980 (120 rue de la Gare ou Une gueule de bois en plomb, par exemple), et comme thème principal dans les récits plus récents (notamment Moi, René Tardi, prisonnier de guerre au Stalag II-B, qui se fonde sur le témoignage du père de l'auteur, officier dans les chars). Paris À travers ses adaptations des Nouveaux mystères de Paris de Léo Malet et la série Adèle Blanc-sec, Tardi . Le Cri du peuple s'inscrit dans le prolongement de ce thème récurrent. Œuvres publiées Albums de bande dessinée Adieu Brindavoine suivi de La fleur au fusil, Casterman, 1974 Le Démon des glaces, Casterman, 1974 La Véritable Histoire du soldat inconnu Futuropolis, 1974. Édition revue et augmentée : La Véritable Histoire du soldat inconnu/La Bascule à Charlot, Futuropolis, 2005 Les Aventures extraordinaires d'Adèle Blanc-Sec, Casterman : Adèle et la Bête, 1976 Le Démon de la Tour Eiffel, 1976 Le Savant fou, 1977 Momies en folie, 1978 Le Secret de la salamandre, 1981 Le Noyé à deux têtes, 1985 Tous des monstres !, 1994 Le Mystère des profondeurs, 1998 Le Labyrinthe infernal, 2007 - Une partie a été prépubliée en trois livraisons mensuelles format journal vendues en librairies. Le Bébé des Buttes-Chaumont, 2022 Rumeurs sur le Rouergue (dessin), avec Pierre Christin (scénario), Gallimard, 1976 Polonius (dessin), avec Picaret (scénario), Futuropolis, 1977 Griffu (dessin), avec Jean-Patrick Manchette (scénario), Éditions du Square, 1978 Ici Même (dessin), avec Jean-Claude Forest (scénario), Casterman, 1979 Tardi, Pepperland, 1979 Mouh Mouh, Éditions Pepperland, 1979 Déprime, Futuropolis, 1981 Nestor Burma, d'après les romans de Léo Malet, Casterman : Brouillard au pont de Tolbiac, Casterman, 1982 120, rue de la Gare, Casterman, 1988 Une gueule de bois en plomb, Casterman, 1990 (hors-série) Casse-pipe à la Nation, Casterman, 1996 M'as-tu vu en cadavre ?, Casterman, 2000 Le Trou d'obus, Imagerie Pellerin, 1984. Tueur de cafards (dessin), avec Benjamin Legrand (scénario), Casterman, 1984. Réédité sous le titre New-York mi amor en 2009 Grange bleue (dessin), avec Dominique Grange (scénario), Futuropolis, 1985 Où vas-tu petit soldat - A l’abattoir ! , Éditions du Monde libertaire, 1989 Tardi en banlieue, Casterman, 1990 Rue des Rebuts, Alain Beaulet, 1990 Jeux pour mourir, d'après le roman de Géo-Charles Véran, Casterman, 1992 C'était la guerre des tranchées, avec Verney Casterman, coll. « Studios (A SUIVRE) », 1993. Le Der des Ders, d'après le roman de Didier Daeninckx, Casterman, 1997 Varlot soldat (dessin), avec Didier Daeninckx (scénario), L'Association, 1999 La Débauche (dessin), avec Daniel Pennac (scénario), Futuropolis, 2000 Le Cri du peuple, d'après le roman de Jean Vautrin, Casterman : Les Canons du , 2001 L'Espoir assassiné, 2002 Les Heures sanglantes, 2003 Le Testament des ruines, 2004 Le Petit Bleu de la côte ouest, d'après le roman de Jean-Patrick Manchette, Les Humanoïdes Associés, 2005 Le Secret de l'étrangleur, d'après le roman Monsieur Cauchemar de Pierre Siniac, Casterman, 2006. Prépublié en cinq livraisons mensuelles format journal vendues en librairies sous le titre L'Étrangleur. Putain de guerre ! (dessin), avec Jean-Pierre Verney (scénario), Casterman : 1914-1915-1916, 2008. Prépublié en trois livraisons mensuelles format journal vendues en librairies. 1917-1918-1919, 2009. Prépublié en trois livraisons mensuelles format journal vendues en librairies. La Position du tireur couché, d'après le roman de Jean-Patrick Manchette, Futuropolis, 2010 Ô dingos, ô châteaux !, d'après le roman de Jean-Patrick Manchette, Futuropolis, 2011 Le Perroquet des Batignolles (scénario), avec Michel Boujut (scénario) et Stanislas Barthélémy (dessin), Dargaud : L’Énigmatique Monsieur Schmutz, 2011 La Ronde des canards, 2014 Moi, René Tardi, prisonnier de guerre au Stalag II-B, Casterman : Moi, René Tardi, prisonnier de guerre au Stalag II-B, 2012 Mon retour en France, 2014 Après la guerre, Casterman, 2018 Le Dernier Assaut (dessin et scénario), Dominique Grange (scénario et musique), édition comprenant un CD audio de quatorze chansons interprétées par Dominique Grange et les musiciens d'Accordzéâm, Casterman, 2016 Élise et les Nouveaux Partisans (Roman graphique autobiographique de Dominique Grange), Delcourt, sortie : 20 ans en mai 1871, éditions Martin de Halleux, septembre 2023. Illustrations Couvertures de romans Jean-Patrick Manchette, Fatale, Éditions Gallimard, 1977 Andre Norton, La planète des ours, Éditions Robert Laffont, 1977. Daniel Pennac, Au bonheur des ogres, 1985. Daniel Pennac, La Fée Carabine, 1987. Daniel Pennac, La Petite Marchande de prose, 1989. Daniel Pennac, Monsieur Malaussène, 1995. Jean Vautrin, Patchwork (Nouvelles), 1995. Nicolas Will, Le Père-Lachaise, Éditions Mosquito, 1995. Daniel Pennac, Des chrétiens et des maures, 1996. Daniel Pennac, Aux fruits de la passion, 1999. Jean Vautrin, Quatre Soldats Français - Adieu la vie, Adieu l'amour, 2004. Jean Vautrin, Quatre Soldats Français - La femme au gant rouge, 2004. Tonino Benacquista, Le Serrurier volant, Estuaire, coll. « Carnets littéraires », 2006. Franz Kafka, Le procès, Edition Folio avec Dossier et chapitres inachevés - 1987- Folio Daniel Pennac, Le cas Malaussène, 2017. Textes illustrés Sauf précision contraire, les œuvres suivantes sont des romans. Michel Lebrun, L'Almanach du crime 1983. L'année du roman policier, Éditions de la Butte aux Cailles, 1982. Ouvrage sur les romans policiers de 1982. Orson Welles, La Toison d'or, Futuropolis, coll. « Futuropolice », 1984. Jacob et Wilhelm Grimm, Le Cochon enchanté, Grasset, jeunesse collection Monsieur Chat, 1984. Céline, Casse-pipe, Futuropolis, 1987. Édition révisée publiée en 2007. Céline, Voyage au bout de la nuit, Futuropolis, 1988. Édition révisée publiée en 2006. Céline, Mort à crédit, Gallimard, coll. « Futuropolis », 1991. Céline, D'un château l'autre, poche, 1991 Céline, Rigodon, poche Céline, Nord, poche Céline, Entretiens avec le professeur Y, poche Céline, Féerie pour une autre fois, poche Daniel Pennac, Le Sens de la houppelande, Futuropolis, 1991. Jules Verne, Un prêtre en 1839, Le Cherche midi, 1992. Jules Verne, San Carlos, Cherche Midi, 1993. Daniel Prévost, Sodome et Virginie, Denoël, 1996. Pièce de théâtre. Laurent Albaret, Guerre et poste. L'extraordinaire quotidien des Français en temps de guerre, Musée de La Poste et Casterman, 2007. Catalogue d'exposition. Pierre Debuys, L'Impasse, Éditions Sansonnet, 2004. Thierry Maricourt, Frérot Frangin, Sarbacane, 2005. Tonino Benacquista, Le Serrurier volant, L'Estuaire, 2006. Dominique Grange (préf. Alain Badiou), 1968-2008... N'effacez pas nos traces, Casterman, 2008. Recueil de chansons accompagné d'un CD. Isabelle Bournier, Des hommes dans la grande guerre, Casterman, 2008. Livre d'histoire pour enfants. Dominique Grange (préf. Lucien Seroux, textes de Jean-Pierre Vernay), Des lendemains qui saignent, Casterman, 2009. Recueil de chansons accompagné d'un CD. Recueils d’illustrations Mine de plomb, Futuropolis, 1985. Chiures de gommes, Futuropolis, 1985. Tardi en banlieue, avec Jean Vautrin (texte), Casterman, 1990. Un strapontin pour deux, avec Michel Boujut (collaboration au texte), Casterman, 1995. Tardi par la fenêtre, avec Michel Boujut (texte), Christian Desbois, 1996. Tardi. Carnet, Jcmenu éditeur, 2001. Illustration de jeux de société Terrain vague, Ludodélire, 1994. Pochettes de disques Pigalle, Regards affligés sur la morne et pitoyable existence de Benjamin Tremblay, personnage falot mais ô combien attachant, Boucherie Productions, 1990 Dominique Grange, Hammam Palace, Celluloid, 1981 Francesca Solleville, Serge Utgé-Royo, Jacques Tardi, Bruno Daraquy, Dominique Grange, Le cri du Peuple, chansons de la Commune. 1871, Casterman, 2005 Feuilleton radiophonique Le Perroquet des Batignolles, avec Boujut, 1997 Littérature jeunesse Le Voyage d'Alphonse (texte), avec Antoine Leconte (illustration), Duculot, 2003. Cinéma 1983 : Et vogue le navire... de Federico Fellini – dessin de l'affiche française 1990 : Uranus de Claude Berri – dessin de l'affiche 1998 : Cookie's Fortune de Robert Altman – dessin de l'affiche française 2010 : Les Aventures extraordinaires d'Adèle Blanc-Sec de Luc Besson – adapté de la bande-dessinée éponyme, il y apparaît dans un caméo (non-crédité). 2015 : Avril et le Monde truqué de Franck Ekinci et Christian Desmares – création de l'univers graphique de ce film d'animation Honneurs et distinctions 1975 : Prix du dessinateur français au festival d'Angoulême 1977 : Prix Saint-Michel pour Adèle Blanc-Sec 1979 : Grand prix Saint-Michel pour « Un cheval en hiver », dans Mouh mouh 1985 : Grand prix de la ville d'Angoulême 1986 : Prix Adamson du meilleur auteur international pour l'ensemble de son œuvre 1994 : Alph'Art du public au festival d'Angoulême pour Jeux pour mourir Prix Max et Moritz de la meilleure publication de bande dessinée importée pour Jeux pour mourir 2002 : Alph'Art du meilleur dessin et Alph'Art du public au festival d'Angoulême pour Le Cri du peuple t. 1 2006 : Prix Max et Moritz exceptionnel pour une œuvre remarquable 2011 : Prix Eisner du meilleur travail inspiré de la réalité et de la meilleure édition américaine d'une œuvre internationale pour C'était la guerre des tranchées 2013 : Proposé pour être décoré de la légion d'honneur, il la refuse. Prix Sproing de la meilleure bande dessinée étrangère pour Putain de guerre ! 2014 : Prix Eisner de la meilleure édition américaine d'une œuvre internationale pour Putain de guerre ! (avec Jean-Pierre Verney) 2015 : Prix Urhunden du meilleur album étranger pour Putain de guerre ! 2016 : Temple de la renommée Will Eisner Notes et références Annexes Documentation Ouvrages et numéros de revue Le Lézard -5 : Tardi, Forest, . . Alain Foulet et Olivier Maltret, Presque tout Tardi, Sapristi, 1996. . Bertrand Tillier (dir), Sociétés & Représentations : Tardi, 2010/1, Articles . . . . . Interviews Jacques Tardi (int. Jean-Marc Vidal), « Le Prem's des prem's », dans BoDoï , . Jacques Tardi (int. Numa Sadoul), Tardi, Niffle, coll. « Profession auteur de bande dessinée », 2000. Jacques Tardi (int. David Alliot), « Entretien avec Jacques Tardi », dans Le Bulletin célinien , . Jacques Tardi (int. Vincent Genot et Laurent Raphaël), « Tardi, tireur d'élite », dans Focus Vif, . Jacques Tardi (int. Kim Thompson), « The Jacques Tardi Interview », dans The Comics Journal 302, , T2-T91. Jacques Tardi (int. Loran), « Tardi. Entretien, Le Monde Libertaire, hors-série, dossier "14-18 : Morts par la France", 57, septembre-. » Vidéo Thomas Boujut, Portrait de Tardi, France 4, 2006. Liens externes Naissance en août 1946 Naissance à Valence (Drôme) Élève de l'École nationale supérieure des arts décoratifs Auteur français de bande dessinée Illustrateur français du XXe siècle Illustrateur français du XXIe siècle Auteur de fiction radiophonique Collaborateur de Pilote Collaborateur de Charlie Hebdo Collaborateur de Siné Hebdo Lauréat du grand prix de la ville d'Angoulême Lauréat du prix Adamson du meilleur auteur international Lauréat du prix du dessin du festival d'Angoulême Lauréat du prix du public du festival d'Angoulême Lauréat du prix Eisner du meilleur travail inspiré de la réalité Lauréat du prix Eisner de la meilleure édition américaine d'une œuvre internationale Lauréat du prix Max et Moritz de la meilleure bande dessinée internationale Lauréat du prix Max et Moritz exceptionnel pour une œuvre remarquable Lauréat du prix Sproing de la meilleure bande dessinée étrangère Lauréat du prix Urhunden du meilleur album étranger Membre du temple de la renommée Will Eisner Personnalité ayant refusé la Légion d'honneur Mémoire de la Première Guerre mondiale en France Antimilitariste français


text: James George Frazer ( - ) est un anthropologue écossais connu pour être le premier à avoir dressé un inventaire planétaire des mythes et des rites. Les 12 volumes de son Rameau d'or, parus entre 1911 et 1915, décrivent des milliers de faits sociaux et religieux, soit relevés par l'auteur dans ses lectures ou relatés par ses correspondants cosmopolites (diplomates, administrateurs coloniaux, explorateurs, missionnaires). En tentant d'interpréter cette masse de faits sociaux (comportements, croyances...), Frazer fondait l'anthropologie religieuse et la mythologie comparée. Biographie Frazer a surtout scruté les tabous qui concernent les personnages sacrés : rois et prêtres. On attend d'eux qu'ils harmonisent nature et société. De ce fait, ils sont astreints à des règles strictes, destinées à les protéger pour qu'ils restent en mesure d'assurer la prospérité du groupe. Représentants et sources de l'équilibre communautaire, leur vie – leur « âme » – doit être mise en garde. Il leur sera ainsi interdit d'entrer en contact avec le sol, le sang, un cadavre, le fer ou les nœuds. En retour, le commun des mortels ne pourra porter ni main ni ombre sur eux, ni les regarder, ni même les nommer. Ce qui leur nuit est impur et rejeté, tabou ; eux-mêmes sont saints et intouchables, tabous. Tel est bien le double sens de ce mot qui nous vient de Polynésie : « sacré et interdit ». Après lui, bien d'autres chercheurs réfléchiront sur les pratiques relatées, tels Freud ou Lévi-Strauss. Ils critiqueront et enrichiront la compréhension qu'en a eue Frazer, trop marquée par le préjugé d'une supériorité de la civilisation occidentale sur celles des « sauvages ». Wittgenstein lui reprochera notamment de n'avoir pas compris que l'hypothèse d'évolution n'est pas une vérité historique, mais un outil méthodologique permettant de présenter le rapport entre les différentes sociétés sous un jour éclairant. Pourtant, beaucoup des intuitions de Frazer resteront valides, comme le lien qui unit tabou et totem selon lequel on n'a pas le droit de tuer ni de manger l'animal ou la plante figurant l'ancêtre protecteur. En tout cas, le répertoire qu'il a établi sert toujours de gisement à ceux qui analysent ces « étranges » croyances, rites et codes dont tant de traces persistent dans nos cultures sécularisées. Hommages Bourdelle fera son buste en Bronze en 1922. Notes et références Bibliographie Œuvres traduites en français Adonis. Étude de religions orientales comparées (vol. V du Rameau d'or), trad., Paul Geuthner, 1934, VII-312 p. La Crainte des morts dans la religion primitive (1932-1936) I° série : 1934, 271 p., trad. Michel Drucker, préface de Paul Valéry II° série : 1935, Nourry, VIII-143 p., trad. Léon Chouville, préface de Lucien Lévy-Bruhl III° série : 1937, Geuthner, 283 p., avant-propos de Bronislaw Malinowski. Les Cultes agraires et sylvestres (vol. III du Rameau d'or), trad. J. Toutain, Schleicher frères, 1911, 591 p. Les Dieux du ciel, trad. Pierre Sayn, Rieder et Librairie de France, 1927, 358 p. [traduction de The worshp of Nature, London, Macmillan & Co, 1926]. Essais et souvenirs (, 1935), trad. Léon Chouville et marquise de Luppé, P. Geuthner, 1936, XXV-111 p. Le Folklore dans l'Ancien Testament (1919), Paul Geuthner, 1924, IX-447 p. Edition abrégée avec notes. Introduction par René Dussaud Atys et Osiris, étude de religions orientales comparées, traduction par Henry Peyre. Paul Geuthner, Annales du Musée Guimet, 1926, 296 p. L'Homme, Dieu et l'immortalité (, London, Macmillan & Co,1927), trad. P. Sayn, P. Geuthner, 1928, XIV-335 p. Magie et religion. Les tabous (vol. I du Rameau d'or), trad. R. Stiébel, Schleicher frères, 1903, V-400 p. Mythes sur l'origine du feu (1930), trad. Michel Drucker, Payot, 1969, 256 p. Les Origines de la famille et du clan (Totemism and Exogamy, 1911-1915), trad. comtesse J. de Pange, P. Geuthner, 1922, 191 p. Les origines magiques de la royauté (1920), trad. P. H. Loyson, P. Geuthner, 1920, 363 p. Le Rameau d'or ( (1ère éd. 1890 ; 3° éd. 1906-1915 en 12 vol.), 1906-1915, édition fr. par Nicole Belmont et Michel Izard, Robert Laffont, coll. « Bouquins » I volume : Le Roi magicien dans la société primitive ; Tabou et les périls de l'âme, 1981, 1080 p. volume : Le Dieu qui meurt ; Adonis ; Atys et Osiris, 1983, 750 p. volume : Esprits des blés et des bois ; Le Bouc émissaire 1983, 880 p. volume : Balder le Magnifique, bibliographie générale, 1984, 740 p. Sur les traces de Pausanias. À travers la Grèce ancienne (, 1900), trad., Les Belles Lettres, 1923, 1965, X-361 p., préface de Maurice Croiset La Tâche de Psyché. De l'influence de la superstition sur le développement des institutions, trad. de l'anglais d'après la édition revue et augmentée (1913), par Georges Roth, A. Colin, 1914, XVII-298 p. Avec une préface de Salomon Reinach. Voir aussi : L'avocat du diable ou la tâche de Psyché, traduction de Georges Roth, préface de Salomon Reinach, Paris, Librairie orientaliste Paul Geuthner, 1914 [The devil's advocate originally published as: Psyche' task, 2nd ed. London, Macmillan, 1913] . Titre original : Psyche's task : a discourse concerning the influence of superstition on the growth of institutions, London, Macmillan & Co, 1909. Le totémisme : étude d'ethnographie comparée, trad. de l'anglais par A. Dirr et A. Van Gennep, Paris, Schleicher frères, 1898, 139 p., in-16 [traduction de Totemism, Edinburgh, A. & C. Black, 1887]. En anglais The Golden Bough. First edition, 2 vols., 1890. (Vol. I, II) The Golden Bough. Second edition, 3 vols., 1900. (Vol. I, II, III) The Golden Bough. Third edition, 12 vols., 1906-15. Volume 1 (1906): The Magic Art and the Evolution of Kings (Part 1) 1920 (reprint) Volume 2 (1911): The Magic Art and the Evolution of Kings (Part 2) Volume 3 (1911): Taboo and the Perils of the Soul Volume 4 (1911): The Dying God Volume 5 (1914): Adonis, Attis, Osiris (Part 1) Volume 6 (1914): Adonis, Attis, Osiris (Part 2) Volume 7 (1912): Spirits of the Corn and of the Wild (Part 1) Volume 8 (1912): Spirits of the Corn and of the Wild (Part 2) Volume 9 (1913): The Scapegoat Volume 10 (1913): Balder the Beautiful (Part 1) Volume 11 (1913): Balder the Beautiful (Part 2) Volume 12 (1915): Bibliography and General Index. Aftermath. A Supplement to the Golden Bough, 1936 The Belief in Immortality and the Worship of the dead, Londres, Macmillan, 1913-1924 vol. I : The Belief Among the Aborigines of Australia, the Torres Straits Islands, New Guinea and Melanesia vol. II : The Belief among the Polynesians vol. III : The Belief among the Micronesians The Fear of the Dead in Primitive Religion, Londres, Macmillan, 1933-1936 vol. I : Belief in the Immortality of the Soul, General attitude of primitive peoples, Fear of the dead in Western and Northern Africa and among the Aborigines of America... vol. II : Recapitulation, Precautions to prevent the return of the banished ghost, Barrier by fire against the return of spirits of the dead vol. III : Precautions against the Return of Ghosts, Deceiving the Ghost, Dangerous Ghosts,... Ghosts of Animals Folklore in the Old Testament, 1918 vol. I : The Early Ages of the World vol. II : The Patriarchal Age vol. III : The Times of the Judges and the Kings Abridged Edition, 1923 . Totemism and Exogamy, 1910-1937 vol. I : Clan Totem, Sex Totem, Individual Totem, Sunphratic and Phratic Totem, Subtotems, The Origin of Totemism, Totemism in Central Australia, in South Eastern Australia, in North-East Australia, in West Australia vol. II : Totemism in Torres Straits, New Guinea, Melanesia, Polynesia, Indonesia, India, Rest of Asia, South Africa, Central africa, West Africa, Madagascar vol. III : Totemism in the United Sates and Canada, in North-West America, Guardian Spirits among the American Indians, Secret Societies among the Indians of the United States, of North-West America, Totemism among the Indians of Central America, among the Indians of South America vol. IV : Summary and conclusion, Notes and corrections, Index, Maps . Totemica, a supplement to 'Totemism and Exogamy' , 1937 . Études sur Frazer Robert Ackerman, , , Cambridge, 1987, 348 p. Robert Ackerman, , Routledge, New York, Londres, 2002, 234 p. Robert Ackerman. « L’anthropologue qui meurt et ressuscite : vie et œuvre de James George Frazer » in Bérose - Encyclopédie internationale des histoires de l’anthropologie, Paris, 2018. Robert Ackerman. « J. G. Frazer and Religion » in Bérose - Encyclopédie internationale des histoires de l’anthropologie, Paris, 2015. Bérose - Encyclopédie internationale des histoires de l’anthropologie. "Frazer, James George (1854 - 1941)", Paris, 2018. Brian R. Clack, , , New York, 1999, 200 p. Frederico Delgado Chaves Rosa, L'Âge d'or du totémisme : histoire d'un débat anthropologique, 1887-1929, CNRS, éd. de la Maison des sciences de l'homme, Paris, 2003, 364 p. (texte remanié d'une thèse soutenue à l'université Paris-X en 2000) Robert Deliège, Une histoire de l'anthropologie : écoles, auteurs, théories, Seuil, 2006, p. 37 Jean-François Dortier, « James George Frazer (1854-1941). Le Rameau d'or et les mythes du roi sacré » ; « James G. Frazer : vie et mort d'un encyclopédiste », in Sciences humaines, , , p. 44-45 Adam Kuper, L'Anthropologie britannique au , (trad. Gérald Gaillard), Karthala, 2000, 273 p. Liens externes Le Rameau d’Or - Extraits Sélectionnés Des parties substantielles de l'œuvre complète, incluant le chapitre rarement disponible «La Crucifixion du Christ» (avec un fond modifiable pour faciliter la lecture) James George Frazer Membre honoraire de la Royal Society Anthropologue écossais Étudiant de Trinity College (Cambridge) Naissance en janvier 1854 Naissance à Glasgow Décès en mai 1941 Décès à 87 ans Comparatisme Théologien écossais Avocat écossais Écrivain écossais du XIXe siècle Écrivain écossais du XXe siècle Étudiant de l'université de Glasgow


text: Liste de jeux Xbox par ordre alphabétique. 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Xbox