Javascript(JS) var 특징

donfree·2022년 3월 16일
0

var

varvariable(변수)의 앞 세글자를 딴 축약어다.
그렇다면 변수는 무엇일까?
컴퓨터 프로그래밍에서 쓰이는 뜻은 아래와 같다.

변수(變數, variable)는 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름. 컴퓨터 소스 코드에서의 변수 이름은 일반적으로 데이터 저장 위치와 그 안의 내용물과 관련되어 있으며 이러한 것들은 프로그램 실행 도중에 변경될 수 있다.
변수 Wikipeida

너무 어렵게 적혀있다.
그냥 하는 라고 이해하자.

변수를 선언하는 방법은 아래와 같다

var apple; // apple 변수 선언

또 아래와 같이 변수에 값을 할당할 수 있다.

var apple = 'delicious';

여기서 '=''같다(equal)'가 아니라 '할당(assign)'이다.
(apple 변수에 'apple'이라는 string값을 할당)
'같다(equal)''==' 또는 '===' 로 사용된다.

var는 여러 특징들이 있다.

  1. 중복 선언
  2. 호이스팅(Hoisting)
  3. 함수 스코프(Function Scope)

1. 중복 선언

var donfree = "male";
var donfree = "female";

console.log(donfree) // "female"

위와 같이 같은 이름의 변수 donfree에 다른 값을 할당해도 error 없이 마지막에 할당한 값이 나온다. 아주 긴 코드가 있다고 생각해보자. 위쪽에서 선언했던 변수를 작업하다가 실수로 같은 변수에 다른 값을 할당해버리면 원했던 결과가 나오지 않을 수 있다.


2. 호이스팅(Hoisting)

console.log(donfree); // undefined

var donfree = "male";

컴퓨터는 코드를 위에서 아래로, 왼쪽에서 오른쪽으로 읽으면서 처리한다. 하지만 위의 코드는 donfree를 미리 위에서 선언하지 않았는데도 console에 undefined가 찍힌다. 그 이유는 var는 호이스팅(hoisting)의 특징을 가지고 있기 때문이다.
(hoist는 '들어올린다'라는 뜻이다.)
따라서 변수선언문을 위로 들어올린다.

코드로 다시 써보면

var donfree;

console.log(donfree);

donfree = "male";

이렇게 된다.


3. 함수 스코프(Function Scope)

scope'범위'라는 뜻이다.
즉, var의 활동 범위(scope)는 함수(function) 안이라는 뜻이다.
코드를 살펴보자.

var donfree = "female";

function foo () {
  var donfree = "male";
}

foo();

console.log(donfree);

어떤 값이 나올까?

foo 함수 안 var donfree(male)의 scope는 함수 스코프이기 때문에 함수 밖에서는 활동을 할 수 없다. 따라서 함수 밖의 var donfree(female)전역(global) 스코프이기 때문에 "female"이 콘솔에 찍힌다.

정답은 "female"이다.

다음 포스팅에서는 let, const에 대해서 정리해보겠습니다.

참고 사이트

JS var -MDN
자바스크립트 변수(Variable), 자료형 -zerocho

profile
code free

0개의 댓글