0
votes

Pourquoi ai-je cette sortie lorsque j'utilise le mot-clé let dont la portée est bloquée?

J'ai ce code

function greetPerson(name: string) {
  let greet;
  if (name === "john") {
    let greet = "hello john";
  } else {
    let greet = "hi there";
  }
  console.log(greet);

}

greetPerson("john");

quand j'ai ces trois déclarations, elles devraient être trois différentes dans chaque portée. Pourquoi est-ce que j'obtiens hello john comme sortie?


2 commentaires

Votre sortie: indéfini


1. pas JavaScript avec le nom: chaîne 2. non


3 Réponses :


0
votes

Vous déclarez la même variable dans chaque condition

function greetPerson(name: string) { 
    let greet;
    if(name === "john") {
        greet = "hello john";
    } else {
        greet = "hi there";
    }
    console.log(greet);
    
}

greetPerson("john");

changez-la comme ceci:

function greetPerson(name: string) { 
    let greet;
    if(name === "john") {
         let greet = "hello john";
    } else {
         let greet = "hi there";
    }
    console.log(greet);
    
}

greetPerson("john");


0 commentaires

0
votes

Je pense que vous pouvez refactoriser votre code. Sortie de votre fonction: indéfinie. Ma solution et son travail:

function greetPerson(name) { 
    if(name === "john") {
         return "hello john"
    } else {
         return "hi there"
    }
}

display.log(greetPerson("john"))


0 commentaires

0
votes

Vous faites 2 erreurs ici.

  1. à l'intérieur de l'appel de fonction, passez juste le nom (pas besoin de mentionner son type)
  2. il suffit de déclarer saluer la première fois. vous le déclarez à nouveau dans if-else.

function greetPerson(name) { 
    let greetn= '';
    if(name === "john") {
         greet = "hello john";
    } else {
         greet = "hi there";
    }
    console.log(greet);
    
}

greetPerson("john");


0 commentaires