Appuyez sur Entrée pour voir vos résultats ou Echap pour annuler.

10 secrets sur JavaScript

Ah! JavaScript… Nous avons tous vu, au début des années 2000, ce à quoi JS servait : faire des animations! Certains se souviendront, notamment, des textes « néons » et autres absurdités qui se faisaient jadis.

Heureusement, notre perception du langage a évolué et nous utilisons maintenant JS comme un véritable langage de programmation impératif. Aujourd’hui, je vous présente 10 secrets sur JavaScript qui en font le langage qu’il est.

1 – Node.js n’a rien inventé

Le 4 décembre 1995 (~23 ans), JS voit le jour chez Netscape. Quelques jours plus tard, toujours en décembre 1995, Netscape développe un langage script côté serveur qu’on nommera Server-Side JavaScript (SSJS). En 1996, Microsoft lance un module IIS pour JScript, sa copie du JavaScript. Il faudra attendre à 2009 pour que node voit le jour, soit pratiquement 15 ans.

2 – Le langage s’appellait initialement LiveScript

Lors de la première intégration du langage au navigateur Netscape Navigator (ouch… les souvenirs!), le nom de code était Mocha, puis a été renommé LiveScript en septembre 1995. Finalement, le nom JavaScript a été adopté le 3 décembre 1995.

3 – JS ne possède aucune abstraction

Pas de classe abstraite, pas d’interface. Difficile de se conformer aux principes SOLID

4 – JS n’a aucun concept privé/public/protégé

Il est impossible d’avoir des membres privés sur nos objets. Tous les membres sont exposés publiquement.

5 – JavaScript fait 2 passes d’analyse du code

Prenons l’exemple suivant :

Ce code produit undefined dans la console au lieu de ReferenceError: test is not defined. JavaScript analyse le code une première fois pour charger les fonctions et les variables déclarées en utilisant var. Ceci fait en sorte que la variable test et la fonction log existent avant d’être déclarées.

6 – Il existe plus qu’un types de portée (scope) pour les variables

Comme vu au point 5, les variables créées avec var existent avant d’être déclarées physiquement dans le code. Ceci est dû au fait que var crée la variable lors de la première passe d’analyse du code, ce qu’on appelle function-scoped. Au contraire, const et let produisent des variables traditionnelles qui existent au niveau du bloc d’instructions, soit bloc-scoped.

Ce code produit 1 en sortie.

Ce code produit  ReferenceError: test is not defined.

7 – Le mot clé this n’est pas l’instance de l’objet courant

En JS, this fait référence au contexte de l’appelant et non à l’instance de l’objet courant. Par exemple :

Ici, this est égal à setTimeout. Par contre :

Ici, this est égal à l’instance de l’objet en cours, soit myObject. Pour changer this, on peut faire :

Dans ce dernier exemple, this devient un autre objet…

8 – Même si c’est impossible, on peut avoir des variables privées-ish

Grâce au module pattern propre à JS, il est possible d’utiliser les portées de variable (scope) pour émuler le concept de membres privés :

9 – C’est possible d’avoir du polymorphisme sur les prototypes

Étant un langage basé sur les prototypes, soit une sous-classes de l’orienté-objet, il est possible pour nos objets d’avoir plusieurs types en clonant les prototypes :

10 – C’est possible de hacker JavaScript

Le terme est peut-être un peu fort, mais c’est possible de modifier le code natif de JavaScript pour le remplacer par le nôtre. Par exemple :

Vous pourriez, par exemple, désactiver tous les console.log en production en écrasant la méthode avec une fonction qui ne fait rien 😉

Conslusion

Vous avez appris aujourd’hui, je l’espère, 10 petits secrets sur JavaScript. Pour poursuivre votre apprentissage, je vous invite à consulter la documentation officielle de JS. Faites-en votre bible 🙂

Je vous invite aussi lire ou relire cet article qui traite de TypeScript, un langage qui se transpile en JavaScript. De plus, si vous vous sentez généreux, vous pouvez me payer une bière pour m’encourager à produire du contenu gratuit et sans publicité pour vous, merveilleuse communauté de développeurs francophones.

Merci de partager avec vos amis et collègues sur les réseaux sociaux!

 

Suivez-nous par courriel!

Saisissez votre adresse courriel pour vous abonner au blog d'Ezo et recevoir une notification de chaque nouvel article par email.