728x90
반응형
- 2024-08-12 : First posting.
.bind, .apply, .call
로 JSON 을 연결시켜 줘도 arrow function 에서 this 는 global 객체 window 를 가리키게 된다.
```
// with bind
const test = {
name: "jake",
foo(callback) {
setTimeout(callback.bind(this), 100)
}
};
test.foo(() => {console.log(this.name)});
// undefined
```/
## 렉시컬 스코프(Lexical Scope)의 개념과 그 특성에 대해 설명
Lexical 이란 어휘적인, 사전의, 사전적인 이란 의미를 갖는 단어로서 Lexical Scope 란 지역변수가 선언되고 유지되는 scope 를 말한다.
렉시컬 스코프(Lexical Scope)는 코드 작성 위치에 따라 변수와 함수의 유효 범위를 결정하는 방식입니다. 이는 함수가 선언된 위치에 따라 스코프가 결정되며, 함수가 호출되는 위치와는 무관합니다. 렉시컬 스코프는 정적 스코프(Static Scope)라고도 불리며, 대부분의 현대 프로그래밍 언어에서 사용됩니다.
렉시컬 스코프의 주요 특성
정적 스코프:
컴파일 시 코드 분석을 통해 스코프 체인이 결정됩니다. 실행 과정에서 동적으로 변하지 않습니다. 블록 스코프와 함수 스코프:
let, const, function 키워드를 사용하여 변수와 함수를 선언할 때 적용됩니다. 블록 스코프는 {} 안에서 유효하며, 함수 스코프는 함수 내에서 유효합니다. 스코프 체인:
변수나 함수를 사용할 때, 현재 코드 블록의 스코프 체인에서 해당 변수나 함수를 검색합니다. 만약 현재 블록에서 찾지 못하면, 외부 블록의 스코프 체인을 차례대로 검색합니다.
렉시컬 스코프의 예시
```
// JavaScript
function outerFunction(name) {
let outerVariable = `나는 외부 변수! ${name}`;
function innerFunction() {
console.log(outerVariable); // '나는 외부 변수!' 출력
}
return innerFunction;
}
const innerFunc = outerFunction("kipid");
outerFunction("Another name");
innerFunc();
// "나는 외부 변수! kipid" 가 출력 됨. 참조되는 내부 변수의 값이 메모리에 계속 저장되어 있음을 알 수 있음.
```/
위 예시에서 innerFunction 은 outerFunction 내에서 선언되었기 때문에 outerVariable 에 접근할 수 있습니다. 이는 함수가 선언된 위치에 따라 스코프가 결정되는 렉시컬 스코프의 특성 덕분입니다.
렉시컬 스코프는 코드 가독성을 향상시키고, 변수 오염을 방지하며, 재귀 함수 구현을 용이하게 합니다. 이를 통해 코드의 유지보수성과 안정성을 높일 수 있습니다.
## RRA
컴파일 시 코드 분석을 통해 스코프 체인이 결정됩니다. 실행 과정에서 동적으로 변하지 않습니다. 블록 스코프와 함수 스코프:
let, const, function 키워드를 사용하여 변수와 함수를 선언할 때 적용됩니다. 블록 스코프는 {} 안에서 유효하며, 함수 스코프는 함수 내에서 유효합니다. 스코프 체인:
변수나 함수를 사용할 때, 현재 코드 블록의 스코프 체인에서 해당 변수나 함수를 검색합니다. 만약 현재 블록에서 찾지 못하면, 외부 블록의 스코프 체인을 차례대로 검색합니다.
728x90
반응형
'[IT/Programming] > HTML related' 카테고리의 다른 글
week4 위클리 페이퍼 (리액트가 렌더링 하는 방식을 설명, 리액트에서 Virtual DOM이 무엇인지, 이를 사용하는 이유는 무엇인지 설명, React 에서 컴포넌트란 무엇이며, 함수형 컴포넌트와 클래스 컴포넌트의 차이점을 설명) (0) | 2024.08.25 |
---|---|
인스타그램 (Instagram) 퍼오는 법 (2) | 2024.08.24 |
Encode/Unescape and Decode/Escape URI Component (0) | 2024.08.20 |
코드잇 풀스택 2기 - Week 6 (0) | 2024.08.20 |
코드잇 풀스택 2기 - Week 5 (0) | 2024.08.20 |
코드잇 풀스택 2기 - Week 4 (0) | 2024.08.20 |
코드잇 풀스택 2기 - Week 2 (0) | 2024.08.20 |