Q1.
/** 2) 접근하고자 하는 하위 변수의 이름을 동적으로 설정해야 할 경우 type2가 활용된다 */
const keyName = "phoneno"; // 이렇게 변수 선언 후 등록해서 설정하는걸 동적으로 설정한다고 하는 것 같다.
console.log(student[keyName]);
이런 내용이 있었는데, 여기서 동적이라는 의미가 뭔지 잘 정리가 안되었어. 정확히, 프로그래밍에서 동적 이라는 의미가 뭐야?
A1.
ChatGPT의 말:
프로그래밍에서 **"동적(dynamic)"**이라는 의미는 프로그램 실행 중에 어떤 값이나 동작이 고정되지 않고, 변화하거나 결정될 수 있다는 것을 말합니다.
이 개념은 다양한 상황에서 사용되지만, 주로 아래와 같은 맥락에서 이해할 수 있습니다:
1. 값이나 동작이 실행 중에 결정됨
- 코드 작성 시 미리 정해진 것이 아니라, 프로그램이 실행되는 동안 결정됩니다.
- 예시에서 keyName = "phoneno"처럼 변수 값을 실행 중에 변경하거나 설정하고 이를 통해 동작을 제어하는 경우를 포함합니다.
const keyName = "phoneno"; // keyName에 어떤 값이 들어올지 코드 작성 시점엔 알 수 없음
console.log(student[keyName]); // 실행 중에 keyName에 따라 동작이 달라짐
위 코드에서는 keyName의 값이 "phoneno"인지 "name"인지에 따라 접근하는 속성이 달라집니다. 즉, 속성을 동적으로 설정하고 접근하는 예입니다.
2. 정적인 것(static)과의 비교
- 정적(static): 코드 작성 시점에 모든 것이 고정된 상태
- 예: console.log(student.phoneno);
- 이 경우 접근할 속성이 phoneno로 고정되어 변경할 수 없습니다.
- 예: console.log(student.phoneno);
- 동적(dynamic): 실행 중에 값이나 동작이 바뀔 수 있는 상태
- 예: console.log(student[keyName]);
- 이 경우 keyName의 값에 따라 접근 대상이 달라지므로 더 유연하게 동작합니다.
- 예: console.log(student[keyName]);
3. 동적의 장점
- 유연성: 상황에 따라 코드를 재작성하지 않고 동작을 바꿀 수 있음.
- 확장성: 새로운 데이터 구조나 동작을 추가할 때 코드 수정 없이 적용 가능.
- 예: 객체 속성이 늘어나더라도 동적 접근을 사용하면 별도 수정 없이 처리 가능.
4. 동적의 활용 예
- 객체 접근: 키 이름을 동적으로 설정
const key = "email";
const user = { name: "Alice", email: "alice@example.com" };
console.log(user[key]); // "alice@example.com"
- 동적 함수 호출: 특정 조건에 따라 호출할 함수를 선택
const actions = {
greet: () => console.log("Hello!"),
farewell: () => console.log("Goodbye!"),
};
const action = "greet";
actions[action](); // "Hello!"
- 동적 DOM 접근: HTML 요소 ID를 실행 중에 결정
const elementId = "button1";
const button = document.getElementById(elementId);
button.click();
요약
**동적(dynamic)**이란 프로그램 실행 중에 값이나 동작이 결정되고, 코드가 더 유연하게 동작할 수 있도록 하는 개념을 말합니다. 예제의 student[keyName]처럼, 미리 고정된 값이 아닌 변수에 따라 동작이 결정되는 방식을 동적이라고 이해하면 됩니다.
'Base' 카테고리의 다른 글
| 프로젝트 디렉토리 또는 위치 변경 (0) | 2024.12.16 |
|---|---|
| 클래스 다이어그램에서의 IsA, HasA (1) | 2024.12.13 |
| 재할당 불가와 참조 불변성의 차이 (0) | 2024.12.04 |
| 시스템/웹에서의 경로 (0) | 2024.12.02 |
| 지역 메서드라는건 없나? (0) | 2024.11.29 |