JavaScript if-else 구문에서 변수 스코프의 뉘앙스
변수 스코프에는 특정한 뉘앙스가 있습니다.
예시를 통해 살펴보겠습니다.
조건문 밖에서 변수 res를 한 값으로 선언하고,
조건문 내부에서 그 값을 다른 값으로 변경해 보겠습니다:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // 2를 출력함
보시다시피, 변수 res가 조건문 내부에서 변경되었습니다.
그러나 조건문 내부에서 let를 통해
변수 res를 또 선언하면 모든 것이 달라집니다:
let res = 1;
if (true) {
let res = 2; // let으로 변수 선언
}
console.log(res); // 2가 아니라 1을 출력함!
여기서 핵심은 조건문 내부에서 let로 변수를 선언하면
로컬 변수 res가 생성된다는 점입니다.
즉, 조건문 내부에는 하나의 변수 res가 존재하고,
조건문 외부에는 또 다른 변수가 존재합니다.
이를 확인하려면 조건문 내부에서 변수 값을 콘솔에 출력해 보면 됩니다:
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2를 출력함
}
console.log(res); // 1을 출력함
아래 코드의 작성자는 나이가 18세 이상인지
확인하고 싶었습니다. 그러나 코드는 나이 값에 관계없이
콘솔에 undefined 값을 출력합니다.
코드 작성자의 오류를 수정하세요. 문제가 있는 코드는 다음과 같습니다:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
아래 코드의 작성자는 나이가 18세 이상인지
확인하고 싶었습니다. 코드를 확인한 결과,
나이가 18세 이상이면 변수 adult에
true가 기록되는 것은 올바르지만, 나이가 18세 미만이면
변수 adult의 값이 undefined가 됩니다.
코드 작성자의 오류를 수정하세요.
문제가 있는 코드는 다음과 같습니다:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
아래 코드의 작성자는 나이 확인을 수행하고 싶었습니다.
그러나 코드는 나이 값에 관계없이
콘솔에 undefined 값을 출력합니다.
코드 작성자의 오류를 수정하세요.
문제가 있는 코드는 다음과 같습니다:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18세에서 23세 사이';
} else {
let res = '23세 초과';
}
} else {
let res = '18세 미만';
}
console.log(res);
아래 코드의 작성자는 나이 확인을 수행하고 싶었습니다.
그러나 코드는 나이 값이 18세보다 클 때
콘솔에 undefined 값을 출력합니다.
코드 작성자의 오류를 수정하세요.
문제가 있는 코드는 다음과 같습니다:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18세에서 23세 사이';
} else {
res = '23세 초과';
}
} else {
res = '18세 미만';
}
console.log(res);