JavaScript

JavaScript (JS) est un langage de programmation de haut niveau, interprété, principalement utilisé pour ajouter de l'interactivité aux sites web et aux applications web.

JavaScript (JS) is a high-level, interpreted, multi-paradigm programming language that conforms to the ECMAScript specification. It is one of the core technologies of the World Wide Web, alongside HTML and CSS, enabling dynamic and interactive content on websites. JavaScript code can be executed directly by web browsers (client-side scripting) or on servers using environments like Node.js (server-side scripting). Its architecture is event-driven and asynchronous, making it well-suited for handling user interactions and network requests without blocking the main execution thread. Key features include dynamic typing, prototype-based inheritance, first-class functions, and a rich standard library. The V8 JavaScript engine, developed by Google, is a prominent example of a high-performance JS engine used in Chrome and Node.js, employing Just-In-Time (JIT) compilation to improve execution speed. Trade-offs include its dynamic nature, which can lead to runtime errors that might be caught at compile time in statically-typed languages, and its single-threaded nature (though asynchronous patterns mitigate blocking). Modern JavaScript development often involves frameworks and libraries (e.g., React, Angular, Vue) to manage complexity and build sophisticated user interfaces.

        graph LR
  Center["JavaScript"]:::main
  Rel_go_lang["go-lang"]:::related -.-> Center
  click Rel_go_lang "/terms/go-lang"
  Rel_assembly_language["assembly-language"]:::related -.-> Center
  click Rel_assembly_language "/terms/assembly-language"
  Rel_nodejs["nodejs"]:::related -.-> Center
  click Rel_nodejs "/terms/nodejs"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧠 Test de connaissances

1 / 1

🧒 Explique-moi comme si j'avais 5 ans

C'est comme les instructions magiques qui font que les sites web font des choses quand on clique dessus, comme afficher des messages pop-up ou faire apparaître des animations, ce qui donne l'impression que le web est vivant.

🤓 Expert Deep Dive

Le modèle d'exécution de JavaScript est principalement mono-thread, utilisant une boucle d'événements pour gérer les opérations asynchrones. La boucle d'événements vérifie en permanence une file de messages et exécute les rappels lorsque la pile d'appels est vide. Cela permet des opérations d'E/S non bloquantes, essentielles pour les applications web. Les moteurs JS modernes (comme V8) utilisent la compilation JIT (Just-In-Time), compilant le code JS en code machine pendant l'exécution pour améliorer les performances. L'héritage basé sur les prototypes diffère de l'héritage basé sur les classes que l'on trouve dans de nombreux autres langages, offrant une flexibilité mais pouvant parfois prêter à confusion. La norme ECMAScript évolue annuellement, introduisant de nouvelles fonctionnalités telles que async/await, les classes et les modules. Les compromis incluent des problèmes potentiels de coercition de type et les défis de gestion des flux asynchrones complexes (callback hell, bien qu'atténué par les Promises et async/await). Des vulnérabilités peuvent survenir en raison de pratiques de codage non sécurisées, telles que le cross-site scripting (XSS) si les entrées utilisateur ne sont pas correctement assainies, ou des références d'objets directes non sécurisées lors de l'interaction avec des API.

📚 Sources