Passer au contenu principal




Muchas veces, tanto en JavaScript como en otros lenguajes de programmation necesitamos realizar diferentes acciones basadas en una condición.

Il y a une instruction if pour cela et aussi l'opérateur conditionnel (ternaire) pour évaluer le conditionnel, que nous appellerons l'opérateur "point d'interrogation". ? Pour la simplicité.

L'instruction "if"

L'instruction if obtient une condition, l'évalue et si le résultat est vrai (true), exécutez le code, et sinon, non.

Par exemple:

// En quelle année la spécification ECMAScript-2015 a-t-elle été publiée? » // Réponse: en 2015, soit année = 2015; if (year == 2015) alert ('Il a été publié en 2015');

Dans l'exemple ci-dessus, la condition est un simple contrôle d'égalité: années == 2015, mais cela peut être beaucoup plus complexe.

S'il y a plus d'une instruction à exécuter, nous devons envelopper notre bloc de code entre accolades:

if (years == 2015) {alert ("Vous avez raison!"); alert ("Vous êtes extrêmement intelligent!"); }

Il est recommandé d'encapsuler le bloc de code si avec clés {} à chaque fois, même s'il n'y a qu'une seule déclaration. Cela améliore la lisibilité.

Conversion booleana

La if déclaration (…) évalue l'expression entre parenthèses et la convertit en type booléen.

  • Un nombre 0, une chaîne vide »«, null, undefined et NaN sont convertis en faux. C'est pourquoi on les appelle des valeurs «fausses».
  • D'autres valeurs deviennent vrai, alors ils sont appelés «vérité».

Ainsi, le code sous cette condition ne s'exécuterait jamais:

if (0) {// 0 est faux ...} ... Et à l'intérieur de cette condition - cela fonctionne toujours: if (1) {// 1 est vrai ...}

Nous pouvons également passer une valeur booléenne pré-évaluée à si, comme ici:

soit cond = (années == 2015); // l'égalité est évaluée à vrai ou faux si (cond) {...}

La clause «else»

La déclaration si peut contenir un bloc Autre optionnel. Il s'exécute lorsque la condition est incorrecte.

Par exemple:

soit âge = 16; if (age> = 18) {alert ('Vous avez déjà l'âge légal'); } else {alert ('vous êtes mineur'); // Puisque l'âge est égal à 16, le bloc if sera complètement ignoré et passera immédiatement à l'autre}

Diverses conditions: "oui non"

Parfois, nous aimerions tester plusieurs variantes d'une condition. Il y a une clause sinon si pour ça.

Par exemple:

let year = prompt ('En quelle année la spécification ECMAScript-2015 a-t-elle été publiée?', ''); if (année <2015) {alert ('Trop tôt ...'); } else if (année> 2015) {alert ('Trop tard'); } else {alert ('Exact!'); }

Dans le code ci-dessus, JavaScript vérifie d'abord année <2015. S'il est faux, il passe à la condition suivante année> 2015 et sinon, il affiche la dernière alerte.

Il peut y en avoir plus d'autre si les blocs. La fin else est facultative.

Opérateur ternaire '?'

Parfois, nous devons affecter une variable en fonction d'une condition.

Par exemple:

laissez AccessAllowed; let age = prompt ('Quel âge avez-vous?', ''); if (âge> 18) {AllowedAccess = true; } else {AllowedAccess = false; } alert (AccessAllowed);

L'opérateur appelé "ternaire" ou "point d'interrogation" nous permet de le faire de manière plus courte et plus simple.

L'opérateur est représenté par un point d'interrogation ?. Le terme formel «ternaire» signifie que l'opérateur a trois opérandes. En fait, c'est le seul opérateur en JavaScript qui en possède autant.

La syntaxe est:

laissez résultat = condition? valeur1: valeur2

Est évalué état, si c'est vrai alors valeur1 est retourné, sinon - valeur2.

Par exemple:

laissez AllowedAccess = (âge> 18)? vrai faux;

Techniquement, nous pouvons omettre les parenthèses autour âge> 18. L'opérateur de point d'interrogation a une faible priorité. Fonctionne après comparaison >, donc nous ferons de même:

// l'opérateur relationnel "age> 18" s'exécute en premier de toute façon // (pas besoin de le mettre entre parenthèses) let AllowedAccess = age> 18? vrai faux;

Pero los paréntesis hacen que el código être más legible, por lo que se recomienda usarlos.

Gardez à l'esprit:
Dans l'exemple ci-dessus, il est possible d'échapper à l'opérateur point d'interrogation, car la comparaison elle-même renvoie vrai / faux:

// idem laissez AllowedAccess = age> 18;

Plusieurs '?'

Une séquence d'opérateurs de points d'interrogation? permet de renvoyer une valeur qui dépend de plus d'une condition.

Par exemple:

laissez age = prompt ('age?', 18); laissez message = (age <3)? "Salut chic @!" : (âge <18)? 'Salut!' : (âge <100)? 'Les salutations !' : «Quel âge inhabituel! '; alerte (message);

Il peut être difficile au début de comprendre ce qui se passe. Mais après une analyse plus détaillée, nous pouvons voir qu'il ne s'agit que d'une séquence ordinaire de tests.

Le premier point d'interrogation vérifie si âge <3.
Si vrai - il renvoie 'Hello, chic @!', Sinon - il passe après les deux points ":" et recherche l'âge <18.
Si c'est vrai, il renvoie «Hello!», Sinon, il passe après les deux points «:» et vérifie l'âge <100.
Si c'est vrai, il renvoie «Salutations!», Sinon, il passe après le dernier deux-points «:» et renvoie «Quel âge inhabituel!».

Ici, je vous montre la même logique en utilisant if..else:

if (age <3) {message = 'Bonjour, chic @!'; } else if (age <18) {message = 'Bonjour!'; } else if (age <100) {message = 'Salutations!'; } else {message = 'Quel âge inhabituel!'; }

Utilisation non traditionnelle de «?»

Parfois le point d'interrogation? est utilisé en remplacement si:

let company = prompt ('Quelle entreprise a créé JavaScript?', ''); (société == 'Netscape')? alert ('Correct!'): alert ('Incorrect.');

En fonction de l'état société == 'Netscape', le premier ou le second en arrière? ils exécutent et affichent l'alerte.

Nous n'affectons pas de résultat à une variable ici. L'idée est d'exécuter un code différent en fonction de la condition.

Il n'est pas recommandé d'utiliser l'opérateur de point d'interrogation de cette manière.

La notation semble être plus courte que if, ce qui plaît à certains programmeurs. Mais c'est moins lisible.

Voici le même code si pour comparaison:

let company = prompt ('Quelle entreprise a créé JavaScript?', ''); if (société == 'Netscape') {alert ('Correct!'); } else {alert ('Incorrect.'); }

Nos yeux scannent le code verticalement. Les constructions qui s'étendent sur plusieurs lignes sont plus faciles à comprendre qu'un long jeu d'instructions horizontal.

L'idée d'un point d'interrogation? est de renvoyer l'une ou l'autre valeur en fonction de la condition. Veuillez l'utiliser exactement pour cela.