• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

동일한 이름의 전역변수 선언이 가능한가요

20.07.27 16:13 작성 조회수 403

1

var index  = 1

var index = 2

console.log(i)  -> 결과는 2

var로 변수를 선언할때 같은 타입의 동일한 이름의 변수를 선언해도 에러가 발생하지 않고 실행이 가능한거 같은데 맞는지요?

첫번째 변수는 두번째 변수에 의해서 덮어 쒸워진건가요?

아니면 그냥 참조하지 못하게 되어서 가비지컬렉터 같은게 있어서 메모리에 반환되는건가요

답변 1

답변을 작성해보세요.

0

김현지님의 프로필

김현지

2021.04.07

안녕하세요, 厳慶一 님!

변수의 이름이 중복으로 선언되었음에도 불구하고 오류가 발생하지 않고 값이 갱신된 것은 var 키워드의 문제점입니다.

ES5까지는 변수를 선언할 유일한 방법이 var 키워드를 사용하는 것이었습니다.

하지만 var 키워드로 선언된 변수는 여러 특징이 있고 이 특징은 문제를 발생시킬 가능성이 있습니다.

var 키워드로 선언한 변수는 중복 선언이 가능합니다.

var 키워드로 선언한 변수를 다시 var 키워드로 선언을 하면 javascript는 오류를 발생시키지 않고 나중에 선언한 변수 선언문은  var 키워드가 없는 것처럼 동작합니다.

이것은 이미 선언한 변수명을 모르고 다시 선언하여 할당한다면 의도치 않게 값이 변경되는 문제가 발생합니다.

또한, var 키워드로 선언한 변수는 함수 레벨 스코프를 갖고 있기 때문에, for 문에서 var 키워드로 변수를 선언하여 사용하면 for 문이 종료되어도 여전히 변수는 전역 변수로 존재합니다.

이러한 이유들로 현재 ES6부터는 변수를 선언할 때 const, let 키워드를 사용합니다.

혹시 궁금하신 점이 있다면 댓글 남겨주세요.

도움이 되었으면 좋겠습니다. :)