20 faits méconnus en JavaScript

Aujourd'hui, on va explorer les recoins obscurs de JavaScript et découvrir 20 faits qui vont vous faire dire "Wahou, je ne savais pas ça !"

Salut la team des dev-ninjas ! Aujourd'hui, on va explorer les recoins obscurs de JavaScript et découvrir 20 faits qui vont vous faire dire "Wahou, je ne savais pas ça !" Attachez vos ceintures, ça va secouer vos neurones !

1. Le + qui se prend pour un -

Le + devant une chaîne la convertit en nombre. C'est comme un mini parseInt() ninja !

console.log(+'42'); // Affiche: 42 (nombre)
console.log(typeof +'42'); // Affiche: "number"

2. Le || paresseux mais malin

L'opérateur || est un pro pour définir des valeurs par défaut.

Javascript
function greet(name) {
    name = name || "Visiteur";
    console.log(`Bonjour ${name} !`);
}
greet(); // Affiche: "Bonjour Visiteur !"

3. La danse du NaN

NaN est le seul rebelle qui n'est pas égal à lui-même.

console.log(NaN === NaN); // Affiche: false
console.log(isNaN(NaN));  // Affiche: true

4. Le mystère du tableau vide

Un tableau vide est considéré comme "truthy". Étonnant, non ?

if ([]) {
    console.log("Je suis vide, mais je suis true !");
}

5. L'addition qui fait des siennes

L'addition de tableaux les transforme en chaînes. JavaScript, tu nous surprendras toujours !

console.log([1,2,3] + [4,5,6]); // Affiche: "1,2,34,5,6"

6. Le piège du this dans les arrow functions

Dans une fonction fléchée, 'this' se réfère au contexte englobant. Attention aux pièges !

const obj = {
    name: "Objet",
    sayHi: () => console.log(`Hi, I'm ${this.name}`)
};
obj.sayHi(); // Affiche: "Hi, I'm undefined"

7. Le comma operator, le méconnu

L'opérateur virgule évalue chaque expression et renvoie la dernière. Pratique pour les one-liners !

let x = (1, 2, 3);
console.log(x); // Affiche: 3

8. Le Label, l'incompris

JavaScript a des labels. Ils existent, mais on les utilise rarement (ouf !).

outerloop:
for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            break outerloop;
        }
        console.log(i, j);
    }
}

9. Le void qui ne fait rien

L'opérateur void évalue une expression et renvoie undefined. Parfait pour les liens JavaScript !

console.log(void 0); // Affiche: undefined
Clic sans effet

10. Le with banni

L'instruction 'with' existe, mais elle est déconseillée. Un vestige du passé !

// À éviter comme la peste !
with (Math) {
    console.log(PI);
    console.log(cos(0));
}

11. Le destructuring magic

Le destructuring permet d'extraire des données comme par magie !

const [a, , b] = [1, 2, 3];
console.log(a, b); // Affiche: 1 3

12. Les template literals multilignes

Les backticks permettent de créer des chaînes multilignes sans concat !

const multiline = `
    Ceci est une chaîne
    sur plusieurs lignes
    sans concat !
`;
console.log(multiline);

13. Le spread operator, l'as du clonage

Le spread operator (...) clone les tableaux et objets en un clin d'œil !

const original = [1, 2, 3];
const copie = [...original];
console.log(copie); // Affiche: [1, 2, 3]

14. Les getters et setters furtifs

Les getters et setters vous permettent d'intercepter l'accès aux propriétés. Ninja style !

const obj = {
    _name: 'John',
    get name() {
        return this._name.toUpperCase();
    },
    set name(value) {
        this._name = value.trim();
    }
};
obj.name = '  Jane  ';
console.log(obj.name); // Affiche: "JANE"

15. Les Proxies, les espions du code

Les Proxies permettent de créer un comportement personnalisé pour les opérations fondamentales.

const handler = {
    get: (obj, prop) => prop in obj ? obj[prop] : 'Propriété non trouvée'
};
const p = new Proxy({}, handler);
p.a = 1;
console.log(p.a, p.b); // Affiche: 1 "Propriété non trouvée"

16. Le Symbol, l'identifiant unique

Symbol crée des identifiants uniques. Parfait pour les propriétés "privées" !

const id = Symbol('id');
const obj = {
    [id]: 42
};
console.log(obj[id]); // Affiche: 42

17. Les générateurs, la pause intelligente

Les générateurs permettent de mettre en pause et reprendre l'exécution d'une fonction.

function* numberGenerator() {
    yield 1;
    yield 2;
    yield 3;
}
const gen = numberGenerator();
console.log(gen.next().value); // Affiche: 1
console.log(gen.next().value); // Affiche: 2

18. L'opérateur de chaînage optionnel

L'opérateur ?. permet d'accéder aux propriétés sans craindre les erreurs.

const user = {};
console.log(user?.address?.street); // Affiche: undefined

19. La fusion d'objets avec Object.assign()

Object.assign() fusionne des objets comme un pro !

const target = { a: 1, b: 2 };
const source = { b: 3, c: 4 };
const result = Object.assign(target, source);
console.log(result); // Affiche: { a: 1, b: 3, c: 4 }

20. Les fonctions auto-invoquées (IIFE)

Les IIFE s'exécutent immédiatement après leur définition. Parfait pour l'encapsulation !

(function() {
    let privateVar = 'Je suis privé';
    console.log(privateVar);
})();

Pro-tip : Maîtriser ces 20 techniques va non seulement booster vos sites, mais aussi vous faire passer pour un vrai sorcier du JavaScript lors de vos prochains entretiens !

Et voilà, mes apprentis JS ! Avec ces 20 techniques en poche, vous êtes parés pour coder comme des dieux et impressionner vos collègues. N'oubliez pas : en JavaScript, la seule limite, c'est votre imagination (et peut-être la patience de votre navigateur) ! 😉

Allez, à vos claviers, et que la force du code soit avec vous !

Enregistrer un commentaire

N'hésitez pas de mentionner votre nom d'utilisateur Telegram à la fin de votre message pour recevoir des cadeaux de la part des modérateurs. Merci de commenter