1. 섀도잉
섀도잉은 스코프 내부에서 이름이 같아서, 상위 스코프에 있는 변수를 가리키는 것을 말함
(변수 b가 어느 범위 안에서 출력해도 이름이 같으니, 값 1을 잘 출력하는걸 말함)
let a = 1;
let b = 1;
{
let a = 2;
{
let a = 3;
console.log(a); // 3출력
console.log(b); // 1출력
}
console.log(a); // 2출력
console.log(b); // 1출력
}
2. 콜백함수
뭔가 자바에서 생성자 초기화 하는것과 비슷하다는 느낌을 받았다.
생성자 초기화한대로 그대로 클래스를 실행하는 것이 너무 닮아 보였다.
아래는 gpt에게 이런 나의 느낌에 대해 맞는 판단인가 물어본 결과다.
function callTenTimes(callback){
for(let i=0; i< 10; i++){
callback();
}
}
callTenTimes(function(){
console.log('park')
})
자바의 생성자와 자바스크립트의 콜백 함수와의 비교를 통해 그런 생각을 가지게 된 까닭을 좀 더 탐구해보겠습니다.
1."동작의 지연" 및 "특정 시점의 동작":
자바의 생성자는 객체가 생성될 때 호출됩니다. 객체 생성 시점의 특정 동작을 구현하기 위해 사용됩니다.
자바스크립트의 콜백 함수는 특정 동작(예: 이벤트, 비동기 작업 완료 등) 후에 호출됩니다. 콜백은 특정 시점에 실행되어야 하는 로직을 포함하고 있습니다.
2."특정 목적에 따른 동작":
자바의 생성자는 객체의 초기화를 위한 목적으로 실행됩니다.
자바스크립트의 콜백 함수는 특정 목적(예: 데이터 처리, 이벤트 응답 등)으로 실행됩니다.
3."사용자 정의 동작":
자바의 생성자를 오버로딩하여 다양한 초기화 동작을 구현할 수 있습니다.
자바스크립트에서 콜백 함수를 다른 함수의 인자로 전달하면, 그 함수 내에서 원하는 시점에 콜백 함수를 호출하여 사용자 정의 동작을 수행할 수 있습니다.
비교적 고수준에서 볼 때, 두 기능 모두 "특정 시점"에 "사용자 정의 동작"을 수행한다는 공통점이 있습니다. 생성자는 객체 생성 시점, 콜백 함수는 주어진 조건 또는 시점에 해당 동작을 수행합니다.
그렇기 때문에, 특정 조건 하에서 실행되는 로직의 "사용자 정의성"과 "동적 실행 시점"의 측면에서 두 기능 사이에 유사성을 느낄 수 있을 것 같습니다.
<보충>
자바와 자바스크립트 모두 객체 지향 프로그래밍 언어의 특징을 가지고 있으며, 이러한 특징이 각 언어의 다양한 기능과 패턴에 반영되어 있습니다.
1.자바의 생성자:
객체 지향의 핵심 개념 중 하나는 "캡슐화"입니다. 자바의 생성자는 이 캡슐화의 일부로, 객체의 초기 상태를 설정하는 데 사용됩니다. 생성자를 통해 객체가 올바른 상태로 시작될 수 있도록 보장합니다.
2.자바스크립트의 콜백 함수:
콜백 함수는 자바스크립트에서 비동기 작업을 처리하는 일반적인 패턴입니다. 객체 지향의 다른 핵심 원칙은 "다형성"이며, 콜백을 사용하면 동일한 함수나 메소드에서 다양한 동작을 수행할 수 있습니다. 콜백 함수를 인자로 받는 함수는 전달된 콜백에 따라 다르게 동작할 수 있습니다.
따라서, 두 기능 모두 객체 지향 프로그래밍의 원칙과 관련이 있습니다. 자바의 생성자는 객체의 상태와 행동을 캡슐화하는 반면, 자바스크립트의 콜백 함수는 다형성을 통해 코드의 유연성과 확장성을 제공합니다.
'🗃️javascript > 이론정리' 카테고리의 다른 글
jquery 기본예시들 정리 (0) | 2023.12.14 |
---|---|
JSON 문자열과 객체 다루기 (0) | 2023.10.26 |
setTimeout, setInterval || 호이스팅[선언적 함수는 맨위로 끌어올려짐.] (0) | 2023.10.25 |
JavaScript에서 숫자 * undefined = NaN (0) | 2023.10.07 |
객체를 선언할 때 키 값은 문자열이지만 특수문자가 키값이 되면 에러 (0) | 2023.10.07 |