Почему здесь у меня такой вывод, когда я использую ключевое слово let, которое блокирует область видимости? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть этот код

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

}

greetPerson("john");

когда у меня есть эти три объявления, они должны быть тремя разными в каждой области. Почему я получаю hello john на выходе?

Ответы [ 3 ]

1 голос
/ 06 августа 2020

Здесь вы делаете 2 ошибки.

  1. внутри вызова функции передайте только имя (не нужно указывать его тип)
  2. объявления приветствия в первый раз достаточно. вы снова объявляете это внутри if-else.

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

greetPerson("john");
0 голосов
/ 06 августа 2020

Я думаю, вы можете рефрактировать свой код. Ваш вывод функции: undefined. Мое решение и его работа:

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

display.log(greetPerson("john"))
0 голосов
/ 06 августа 2020

Вы объявляете одну и ту же переменную в каждом условии

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

greetPerson("john");

измените ее следующим образом:

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

greetPerson("john");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...