JavaScript 함수에서 동일한 변수명
함수 외부와 내부에 모두
num이라는 변수가 있다고 가정해 봅시다. 이 경우 지역 변수
num에 대한 어떠한 변경도 전역 변수
num에 영향을 주지 않습니다:
let num = 1; // 전역 변수
function func() {
let num = 2; // 지역 변수
console.log(num);
}
func(); // 함수 호출, 2 출력
console.log(num); // 1 출력 - 전역 변수는 변경되지 않음
그러나 지역 변수
num을 선언할 때
let을 깜빡한다면, 함수 내부에 새로운 지역 변수
num가 생성되지 않고 단순히 전역 변수가 수정됩니다:
let num = 1;
function func() {
num = 2; // let 작성 깜빡함 - 외부 변수 수정
console.log(num);
}
func(); // 함수 호출, 2 출력
console.log(num); // 2 출력 - 변수가 변경됨
여기에는 두 가지 상황이 있을 수 있습니다: 우리가 실제로 전역 변수를 변경하려고 했거나(그렇다면 괜찮음),
let을 깜빡하고 실수로 전역 변수를 변경한 경우입니다.
두 번째 경우는 스크립트의 예측 불가능한 동작으로 이어지는 발견하기 어려운 오류입니다.
따라서 새로운 변수를 도입할 때는 항상
let을 사용하여 선언하세요.
코드를 실행하지 않고 콘솔에 무엇이 출력될지 확인하세요:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
코드를 실행하지 않고 콘솔에 무엇이 출력될지 확인하세요:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);