-
#JavaScript Grammar_변수와 상수Javascript 2023. 10. 15. 21:22
# 변수란?
- 데이터를 저장하고 나중에 사용할 때 데이터를 참조하는데 사용함.
- 메모리 상의 위치에 이름을 붙인 것이며, 데이터 위치를 가리키기 위한 이름 또는 식별자로 사용함.
# 상수란?
- 변수와 유사하지만, 한 번 할당하면 값을 변경할 수 없는 식별자
- 주로 변하지 않아야 하는 값에 사용되며, 코드의 가독성과 안정성을 향상시킴
상수 예시)
const pi = 3.14159265359; // 'pi' 상수에 원주율 값을 할당한 후 다시 할당 불가능
<변수의 5가지 주요 개념>
var myVar = "Hello World!"; //가 있다고 가정
1. 변수 이름(Variable Name):
- 변수 이름은 데이터를 고유하게 식별하는 이름. 이것은 변수를 사용하여 값을 저장하고 추적하는 방법
- 변수 이름은 일반적으로 문자, 숫자, 밑줄(_)로 구성되며 대소문자를 구분.
- 예시) `myVar` 라는 변수 이름.
2. 변수 값(Variable Value):
- 변수 값은 변수에 실제로 저장되는 데이터 정보이며, 변수가 "가지고 있는" 데이터.
- 변수 값은 어떠한 데이터 형식이든 가능하며, 숫자, 문자열, 객체 등이 될 수 있음.
- 예시) `myVar`의 값은 `"Hello World!"`.
3. 변수 할당(Variable Assignment):
- 변수 할당은 변수에 값을 저장하는 행위를 의미, 변수를 초기화 하거나 업데이트할 때 사용.
- 할당 연산자 ('=')를 사용하여 값을 변수에 넣음.
- 예시)`myVar` 변수에 `"Hello World"`를 할당하는 것 >>> `myVar = "Hello World!"`.
4. 변수 선언(Variable Declaration):
- 변수를 사용하려면 먼저 변수를 선언해야 함, 변수 선언은 컴퓨터에 이 변수를 인식하도록 하는 행위.
- 선언 시, `var`, `let`, 또는 `const` 키워드를 사용하며 이는 변수의 유형을 지정.
- 예시) `var` 키워드를 사용하여 `myVar` 변수를 선언 >>> `var myVar;`.
5. 변수 참조(Variable Reference):
- 변수 참조는 변수의 할당된 값을 읽거나 사용하는 행위를 말하며, 변수의 값을 다른 코드에서 사용할 수 있게 함.
- 예시) `myVar` 변수의 값을 콘솔에 출력하는 것 >>> `console.log(myVar)`.
<변수를 선언하는 3가지 방법>
1. `var`(옛날 방식) :
- `var`로 선언한 변수는 함수 스코프를 가지며, 호이스팅(hoisting)이 발생함.
- `var`로 선언한 변수는 중복 선언이 가능하며, 동일한 변수의 이름을 여러 번 선언해도 오류가 발생하지 않음.
- `var`는 값을 재할당할 수 있음.
var myVar = "Hello World"; console.log(myVar); // "Hello World" myVar = "New Value"; // 값 변경 가능 console.log(myVar); // "New Value"
2. `let`(모던 방식_ ES6에서 새롭게 도입된 방식) :
- `let`을 사용하여 변수를 선언할 때, 변수는 블록 스코프를 가지며 호이스팅이 발생함.
- `let`으로 선언한 변수는 중복 선언이 불가능하며, 같은 변수 이름을 두 번 선언하면 오류가 발생함.
- `let`은 값을 재할당할 수 있음.
let myLet = "Hello World"; console.log(myLet); // "Hello World" myLet = "New Value"; // 값 변경 가능 console.log(myLet); // "New Value"
3. `const`(상수_ ES6에서 새롭게 도입된 방식):
- `const`를 사용하여 변수를 선언할 때, 변수는 블록 스코프를 가지며 한 번 할당하면 값을 변경할 수 없음.
- `const`로 선언한 변수는 중복 선언이 불가능하며, 값을 변경하려고 하면 오류가 발생함.
const myConst = "Hello World"; console.log(myConst); // "Hello World" myConst = "New Value"; // 오류 발생: 상수는 값 변경 불가능
+ 위 정리글에 나온 호이스팅(Hoisting)과 블록스코프(Block Scope)에 관하여...
# 호이스팅(Hoisting)이란?
- JavaScript에서 변수 및 함구 선언을 해당 스코프의 최상단으로 "끌어 올리는" 동작을 나타냄.
- 이것은 코드 실행 전에 발생하며 개발자가 코드를 작성한 순서와는 다르게 작동할 수 있음.
예시 1) 변수 선언 호이스팅:
- JavaScript는 변수 선언문을 해당 스코프의 최상단으로 끌어 올림.
- 이렇게 하면 변수를 선언하기 전에 변수를 참조할 수 있지만, 변수 초기화(값 할당)는 끌어 올라가지 않으며 선언 시에만 발생함.
console.log(myVar); // 출력: undefined var myVar = 42;
위의 코드는 실제로 다음과 같이 작동함
var myVar; console.log(myVar); // 출력: undefined myVar = 42;
예시 2) 함수 선언 호이스팅:
함수 선언도 마찬가지로 해당 스코프의 최상단으로 끌어 올리며 함수를 선언하기 전에 호출이 가능함.
sayHello(); // 출력: "Hello!" function sayHello() { console.log("Hello!"); }
위의 코드는 실제로 다음과 같이 작동함
function sayHello() { console.log("Hello!"); } sayHello(); // 출력: "Hello!"
- 호이스팅은 코드 작성의 편의성을 높이지만, 주의해서 사용을 해야함.
- 유지보수하기 쉽게 하려면 변수와 함수를 사용하기전에 선언하는 것이 좋음.
#블록 스코프(Block Scope)란?
- 변수나 상수가 유효한 번위를 나타내는 개념
- 중괄로 `{ }`로 둘러 쌓인 코드 블록 내에서 선언된 변수나 상수가 해당 블록 내에서만 유효함.
- 블록 외부에서는 접근불가능.
- 즉, 변수나 상수가 선언된 중괄호 내에서만 사용 가능한 범위를 뜻함.
블록 스코프 예시)
if (true) { let blockScopedVar = "I'm in a block"; console.log(blockScopedVar); // "I'm in a block" } console.log(blockScopedVar); // 에러 발생: blockScopedVar는 블록 외부에서 접근 불가능
- 위의 코드에서 `blockScopedVar`는 `if`문 내에서 선언되었으며, `if` 블록 외부에서는 접근할 수 없음.
'Javascript' 카테고리의 다른 글
#JavaScript Grammar_연산자 (0) 2023.10.16 #JavaScript Grammar_형 변환 (0) 2023.10.16 #JavaScript Grammar_데이터 타입(3) (0) 2023.10.16 #JavaScript Grammar_데이터 타입(2)_문자 (0) 2023.10.16 #JavaScript Grammar_데이터 타입(1)_숫자 (0) 2023.10.16