JS 도라에몽

자바스크립트 변수

박금향 2023. 8. 31. 09:15

W3Schools 에 있는 내용들 기반 작성

 

- 보통 변수를 사용하기 전에 변수를 선언하는 것이 좋다.

- 스크립트의 시작 부분에 모든 변수를 선언하는 것이 좋다.

 

var 사용 예제

var x = 5;
var y = 6;
var z = x + y;

 

- var는 1995년부터 2015년까지 모든 자바스크립트 코드에서 사용되었다.

- let과 const는 2015년에 자바스크립트에 추가되었다.

- var는 이전 브라우저용으로 작성된 코드에서만 사용해야 한다.

 

const는 상수값으로, 변경할 수 없다.

let은 변경할 수 있다.


변수를 만들 때 일반적인 규칙

- 변수의 이름에는 문자, 숫자, _ , $ 가 포함될 수 있다.

- 변수의 이름은 문자로 시작해야 하지만, $나 _로 시작할 수도 있다.

- 변수의 이름은 대소문자를 구별한다. (x와 X는 서로 다른 변수다)

- 예약된 단어(예)자바스크립트 키워드)는 변수의 이름으로 사용할 수 없다.

 

자바스크립트에서 = 는 "할당 assignment" 연산자일 뿐, "등호 equal to" 연산자가 아니다.

자바스크립트에서 등호 연산자는 == 로 쓴다.

 

자바스크립트에서 변수를 만드는 것을 "변수 선언"이라고 한다.

var carName; let foodName;

var나 let, const를 써서 변수를 선언하는데, 변수 선언은 선언일 뿐, 값을 주는 게 아니므로 undefined 값을 가지고 있다.

그래서 변수에 값을 할당하려면 = 를 써야한다.

 

🎯 const는 선언할 때 값을 할당해야 한다.

const A = 3.342; ⭕

 

const A;
A = 3.342; ❌


재선언

var는 재선언이 된다. 하지만 let과 const는 안 된다.

var carName = "아우디";
var carName; ⭕

let carName = "아우디";
let carName; ❌


문자 합치기

숫자끼리 합칠 땐 +가 연산이 되지만

문자가 같이 합쳐지는 경우 다 문자로 합쳐진다.

let x = 2 + 3 + "5";
x = 235


const의 오해가 생길만한 부분

const로 재선언/재할당이 안 되니까 배열이나 개체의 속성도 변경되지 않는 걸 당연하게 이해할 수 있다.

하지만 const도 Array의 Element(요소)나 Object(개체)의 Properties(속성)을 변경할 수 있다.

// You can create a constant array:
// const로 어레이을 만들 수 있다.
const 자동차 = ["BMW", "아우디", "벤츠"];

// You can change an element:
// const를 써서 어레이를 만들었어도 그 배열 안의 개체는 바꿀 수 있다.
cars[0] = "제네시스";

// You can add an element:
// const로 만든 어레이에 새로운 개체를 만들 수도 있다.
cars.push("폭스바겐");

위의 건 다 정상적으로 된다는 뜻.
하지만 아래는 안 된다.

const 자동차 = ["BMW", "아우디", "벤츠"];
cars = ["제네시스", "폭스바겐", "아우디", "벤츠"] //이러면 에러다.

 

Constant Objects(상수 객체)도 마찬가지다.

// You can create a const object:
// const로 const object를 만들 수 있다.
const 아이유 = {이름:"이지은", 성별:"여성", 솔로가수:"맞음"};

// You can change a property:
// 상수 객체의 속성을 바꿀 수 있다.
아이유.성별 = "모름"; 

// You can add a property:
// 상수 객체의 속성을 추가할 수 있다.
아이유.재력 = "매우빵빵";

var과 let, const의 범위

 

var는 Block Scope에 갇히지 않는다.

let과 const는 Block Scope에 갇힌다.

const x = 10;
// 여기의 x는 10 이다.

{
const x = 2;
// 여기의 x는 2 이다.
}

// 그럼 x는 몇일까?
// {} 속의 x는 {}를 벗어날 수 없기 때문에
// x = 10 이다.