Javascript의 역할 영역 및 역할 영역 체인
5366 단어 fundamentalsjavascriptscope
범위는 무엇입니까?
범위는 변수와 문장이 접근할 수 있는 공간으로 정의할 수 있습니다.이것은 변수를 서로 충돌하지 않고 같은 이름을 가지게 할 수 있으며 외부 역할 영역이 내부 역할 영역에 접근하는 것을 방지할 수 있다.
Javascript에는 글로벌 도메인, 함수/로컬 도메인 및 블록 도메인의 세 가지 역할이 있습니다.이러한 내용이 무엇인지 살펴보겠습니다.
전 세계
아래의 예를 보아라.함수
getAge
은 함수 외부를 인용할 수 있으나 전역 범위 내에 있는 age
이다.부분적 또는 기능적 범위
함수 호출로 생성된
다른 예를 봅시다.다음은
getAge
함수의 결과를 인쇄할 것입니다.age
상수는 함수 역할 영역에 있기 때문에 되돌릴 수 있지만, 전역 역할 영역에서 출력을 시도할 때 인용 오류가 발생합니다.이것은 외부 역할 영역(이 예에서 전역 역할 영역)이 getAge
에서 만든 내부 역할 영역(로컬 역할 영역)에 접근할 수 없기 때문이다.블록 범위
let
및 const
용)아래의 예에서 우리는 변수
msgOne
을 인쇄할 수 있지만 상수 msgTwo
을 인쇄할 수 없다.앞에서 말한 바와 같이 const
과 let
은 블록 범위이기 때문에 이들은 블록 내부에서만 볼 수 있고 본 예에서 if
문장 내부에서만 볼 수 있다.한편, var
은 함수 범위이기 때문에 함수에 접근할 수 있다.범위 체인
다음 코드를 보세요.콘솔에 인쇄된 내용은 무엇입니까?정답은
My name is Joana, I'm from Brazil and I speak brazillian portuguese
입니다.그러나, displayInfo
함수가 당신의 역할 영역 밖에서 상수에 접근할 수 있도록 하는 것은 무엇입니까?const language = 'brazillian portuguese'
const name = 'Ana'
function displayIntroduction() {
const name = 'Maria'
const country = 'Brazil'
function displayInfo() {
const name = 'Joana'
console.log(`My name is ${name}, I'm from ${country} and I speak ${language}`)
}
return displayInfo()
}
displayIntroduction()
우리가 어떻게 집행하는지를 깊이 연구하기 전에, 나는 집행 상하문에 대해 간단하게 이야기할 것이다.본고는 이 개념을 소개하지 않겠지만 범위 체인을 이해하기 위해 그것이 무엇인지 설명하는 것이 중요하다.따라서 실행 상하문은 자바스크립트 코드를 평가하고 실행하는 환경이다.코드가 처음 실행될 때, 전역 실행 상하문을 만들고, 함수가 호출될 때마다 함수 실행 상하문을 만듭니다.이 코드의 역할 체인은 다음과 같습니다.각 실행 컨텍스트에는 범위 체인이 있습니다.이것은 실행 상하문에서 인용할 수 있는 변수와 대상으로 구성되어 있다.변수와 대상을 제외하고는 상위 범위 체인에 대한 인용을 저장하는
outer
이라는 속성이 있습니다.displayInfo
함수를 실행하고 name
에 도달하면 로컬 역할 체인에서 그것을 검색하여 Joana
을 값으로 찾습니다.country
도 같은 과정이 발생하지만 현지 범위 내에 있지 않다.그럼,javascript는 어떻게 그것을 인용합니까?
로컬 역할 영역에서 상수를 찾을 수 없을 때javascript는
outer
에 저장된 인용 접근 가능한 부모 로컬 메모리에 접근하여 Brazil
을 값으로 합니다.마지막으로 가장 중요하지 않은 것은
language
도 같은 일이 일어났다는 것이다. 이 예에서 자바스크립트 엔진은 작용역 체인을 따라 전역 작용역에 도달하여 상수를 찾고 검색값은 brazillian portuguese
이다.중요한 것은 범위 체인이 내부 범위에서 외부 범위까지 한 가지 방식으로만 작동하기 때문에 전역 실행 상하문은 country
에 접근할 수 없다는 것을 알아야 한다.또한 전역 실행 상하문은 최고급 상하문이고
outer
은 null
을 가리키기 때문에 변수가 거기에 없으면 은식 성명(엄격한 모드가 아니라면)이 되고 그렇지 않으면 오류가 되돌아온다는 것을 알아야 한다.결론
작용역과 작용역 체인은 자바스크립트 엔진이 코드를 어떻게 처리하고 집행하는지 이해하는 기본 주제이다.
요약:
감사합니다:)
Reference
이 문제에 관하여(Javascript의 역할 영역 및 역할 영역 체인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tailine/scope-and-scope-chain-in-javascript-3478텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)