자바스크립트에서 변수 선언 방법은 무엇인가요?
_____A1: 자바스크립트에서는 변수를 선언할 때 `var`, `let`, `const` 키워드를 사용합니다.
Q2: `var`로 변수 선언하는 방법은?
A2: `var`는 ES6 이전부터 사용된 변수 선언 키워드입니다. 함수 스코프를 가지며, 같은 이름으로 여러 번 선언해도 에러가 발생하지 않습니다. 예:
```javascript
var x = 10;
```
Q3: `let`으로 변수 선언하는 방법은?
A3: `let`은 ES6에서 도입되었으며 블록 스코프를 갖습니다. 같은 블록 내에서 재선언이 불가능하지만, 값의 재할당은 가능합니다. 예:
```javascript
let y = 20;
y = 30; // 가능
```
Q4: `const`로 변수 선언하는 방법은?
A4: `const`도 ES6에서 도입되었으며 블록 스코프를 가집니다. 선언 시 반드시 초기화해야 하며, 값의 재할당이 불가능합니다. 그러나 객체나 배열의 내부 값 변경은 가능합니다. 예:
```javascript
const z = 40;
z = 50; // 오류 발생
```
Q5: 변수 선언 시 초기화는 필수인가요?
A5: `var`와 `let`은 초기화 없이 선언할 수 있으나, `const`는 선언 시 반드시 초기값이 있어야 합니다.
Q6: 변수 선언 키워드별 주요 차이점은 무엇인가요?
A6:
- `var`: 함수 스코프, 호이스팅 시 선언만 끌어올려짐, 재선언 가능
- `let`: 블록 스코프, 호이스팅되나 TDZ(Temporal Dead Zone) 존재, 재선언 불가, 재할당 가능
- `const`: 블록 스코프, TDZ 존재, 재선언 및 재할당 불가
Q7: 어떤 경우에 각각의 키워드를 사용하는 것이 좋은가요?
A7:
- `const`: 변하지 않는 값을 선언할 때 권장
- `let`: 값을 변경할 필요가 있을 때 사용
- `var`: 기존 코드 호환용이나 특별한 이유가 없으면 사용 지양
Q8: 예시 코드로 변수 선언 방법을 보여주세요.
```javascript
var a = 1;
let b = 2;
const c = 3;
```
아래에서 각 방법에 대해 자세히 설명하겠습니다.
1. `var` `var`는 자바스크립트에서 가장 오래된 변수 선언 방법입니다.
ES5(ECMAScript
5) 이전부터 사용되어 왔으며, 다음과 같은 특징이 있습니다.
- 스코프(Scope) : `var`로 선언된 변수는 함수 스코프(Function Scope)를 가집니다.
즉, 변수가 선언된 함수 내에서만 유효하며, 함수 외부에서는 접근할 수 없습니다.
만약 함수 외부에서 `var`로 변수를 선언하면, 해당 변수는 전역 스코프(Global Scope)를 가지게 됩니다.
- 호이스팅(Hoisting) : `var`로 선언된 변수는 호이스팅이 발생합니다.
이는 변수가 선언된 위치와 상관없이 해당 변수가 함수의 시작 부분으로 끌어올려진 것처럼 동작한다는 의미입니다.
따라서 변수 선언 이전에 해당 변수를 참조할 수 있지만, 초기화는 선언 이후에 이루어지므로 `undefined` 값을 반환합니다.
```javascript console.log(x); // undefined var x = 5; console.log(x); // 5 ```
2. `let` `let`은 ES6(ECMAScript 201
5)에서 도입된 변수 선언 방법으로, `var`의 단점을 보완하기 위해 만들어졌습니다.
`let`의 주요 특징은 다음과 같습니다.
- 블록 스코프(Block Scope) : `let`으로 선언된 변수는 블록 스코프를 가집니다.
즉, 중괄호 `{}`로 감싸진 코드 블록 내에서만 유효합니다.
이는 `if`, `for`, `while` 등의 블록에서도 적용됩니다.
```javascript if (true) { let y = 10; console.log(y); // 10 } console.log(y); // ReferenceError: y is not defined ``` - 호이스팅 : `let`으로 선언된 변수도 호이스팅이 발생하지만, 초기화 이전에 해당 변수를 참조하면 `ReferenceError`가 발생합니다.
이는 변수가 선언되기 전에는 사용할 수 없다는 의미입니다.
```javascript console.log(z); // ReferenceError: Cannot access 'z' before initialization let z = 15; ```
3. `const` `const` 역시 ES6에서 도입된 변수 선언 방법으로, 상수를 선언할 때 사용됩니다.
`const`의 주요 특징은 다음과 같습니다.
- 블록 스코프 : `const`로 선언된 변수도 블록 스코프를 가집니다.
이는 `let`과 동일합니다.
```javascript if (true) { const a = 20; console.log(a); // 20 } console.log(a); // ReferenceError: a is not defined ``` - 초기화 필수 : `const`로 선언된 변수는 반드시 선언과 동시에 초기화해야 합니다.
초기화하지 않으면 `SyntaxError`가 발생합니다.
```javascript const b; // SyntaxError: Missing initializer in const declaration ``` - 재할당 불가 : `const`로 선언된 변수는 재할당이 불가능합니다.
즉, 한 번 값을 할당하면 다른 값을 다시 할당할 수 없습니다.
그러나 객체나 배열의 경우, 내부의 속성이나 요소는 변경할 수 있습니다.
```javascript const c = 30; c = 40; // TypeError: Assignment to constant variable. const obj = { name: 'Alice' }; obj.name = 'Bob'; // 가능 console.log(obj.name); // 'Bob' ``` 결론 자바스크립트에서 변수 선언 방법은 `var`, `let`, `const`로 나뉘며, 각각의 사용 목적과 특징이 다릅니다.
일반적으로는 `let`과 `const`를 사용하는 것이 권장되며, `var`는 구식 코드나 특정한 상황에서만 사용하는 것이 좋습니다.
`let`은 변수가 블록 스코프를 가질 때, `const`는 상수를 선언할 때 사용합니다.
이러한 규칙을 이해하고 적절히 활용하면, 더 안전하고 유지보수하기 쉬운 코드를 작성할 수 있습니다.
작성자:
정다희 [비회원]
| 작성일자: 1년 전
2024-09-08 14:47:21
조회수: 162 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 162 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.