범위 및 끝
- 닐 드글래스 타이슨
오늘의 글에서 우리는 범위와 클로즈업을 이해하는 데 도움을 줄 기본적인 자바스크립트 기초 지식을 소개할 것이다.유지보수 프레임워크가 심지어 vanilla js의 미래 프로젝트일 때에는 현재의 유니버설 네트워크에 없는 곳이 없다.우리는 일을 몇 가지 부분으로 분해하여 작용역의 서로 다른 유형을 깊이 이해하도록 할 것이다. 한 문장에 많은 정보가 제한되어야 하기 때문에 시간을 위해 오늘의 읽기는 작용역과 클로즈업만 논의할 것이다. 이따가 우리는 수조 방법, 원형과 계승, 그리고 강력한 범례에 사용되는 유형을 깊이 파헤칠 것이다.시작합시다!
컨텐트
javascript의 역할 영역과 클립은 어떻게 작동합니까?범위는 우리가 현재 접근할 수 있는 변수와 어디에서 접근할 수 있는지를 정의합니다.이러한 기본 원리가 어떻게 작동하는지 이해하는 것은 매우 중요하다. 왜냐하면 그들은 대다수 상황에서 코드에 나타나고, 새로운 개발자에게 질문을 해서 그들이 lexical environment의 작업 원리를 이해할 수 있도록 하기 때문이다.
전 세계
서로 다른 등급의 역할 영역이 있으면 우리가 더 좋은 코드를 작성하는 데 도움을 줄 수 있다.범위는 매우 큰 개념이다. 만약에 우리가 그것을 깊이 이해해야 한다면, 우리의 목표는 함수와 방법이 어떻게 상호작용하여 특정한 출력을 얻는 기본 개념을 이해하는 것이다.나는 우리가 모두 전 세계의 범위를 잘 알고 있다고 가정한다.전역 범위는 코드의 어느 곳에서든 우리가 만든 변수를 방문할 수 있는 곳입니다.더 많은 코드를 깊이 이해할 때 더 잘 알 수 있을 것입니다.다음 예에서 우리는 함수 외부에서 변수를 설명하고 함수 내부에서 변수를 설명한다.우리는 var1이 문자열 ("hello") 을 저장하고, var2가 내부에서 밖으로 인사하는 함수도 문자열 ("world") 을 저장하는 것을 발견했다.() 우리의 변수를 기록하고 두 개의 출력을 얻습니다.우리가 얻은 첫 번째 출력은 "Hello"입니다. 컨트롤러를 호출하고 있기 때문입니다.전역 단계에서 로그아웃하면 모든 내용이 우리의 기능 범위 내에 있지 않거나 코드의 어느 곳에서든 접근할 수 있습니다.우리의 두 번째 컨트롤러.log () 출력은 함수에 저장된 변수에 접근하려고 하기 때문에 정의되지 않았습니다.우리는 다음 단계에서 왜 이런 상황이 발생했는지 더욱 깊이 이해할 것이다.
#Javascript Scope and Closure
# Global Scope
# declare variable
const var1 = 'hello';
# Function Scope
function greeting(){
const var2 = 'world';
};
console.log(var1); #output = 'hello'
console.log(var2); #output = 'undefined'
Evolution is the fundamental idea in all of life science - in all of biology.
Bill Nye
기능 범위
우리는 어떻게 함수 중의 변수에 접근합니까?함수 작용역은 함수에서 변수를 설명할 수 있습니다. 함수는 함수에 존재하지만 코드의 다른 곳에는 존재하지 않습니다.이 함수에 특정된 사유 함수.유일한 단점은 외부에서 함수에 접근해서 이 변수에 접근할 수 없지만, 함수는 그 범위 밖의 변수를 접근하고 가져올 수 있다는 것이다.
#Javascript Scope and Closure
# Global Scope
# declare variable
const var1 = 'hello';
# Function Scope
function greeting(){
const var2 = 'world';
console.log(var1); # output 'hello';
console.log(var2); # output 'hello';
};
# Invoke function
greeting();
블록 범위if/else 문장과 for 순환을 사용하는 경향이 있을 때 블록 범위를 사용합니다.let이나const로 설명된 변수는 문장이나 순환에서만 사용할 수 있습니다. (for 순환의 i와 같습니다.)문장(다른 언어는 복합문장이라고 부른다)을 블록으로 조합하는 것은 자바스크립트에서 흔히 볼 수 있는 방법이다.Block scope은 var,let,const를 사용하여 우리의 변수가 Block scope라는 주제를 설명하는 또 다른 내용입니다. Block scope는 그것들에 대한 작업 방식이 다릅니다.Block Statement MDNdocs에 아주 좋은 위키문장이 있어요.
크레인
일반적으로, 우리가 변수를 성명할 때, 우리는 같은 줄에서 이렇게 하는 경향이 있다.
var greeting = 'hello world';
일반적으로 JavaScript의 규칙에 따라 이 일을 할 필요가 없습니다. 단독으로 그것들을 성명하여 같은 결과를 얻을 수도 있습니다. 이것은 받아들일 수 있습니다.# declare variable
var greeting;
# store string
greeting = 'hello world';
컴파일러는 변수를 초기화하고 스크립트의 나머지 부분을 실행하기 전에 모든 변수를 설명합니다.일단 우리 파일에 행 코드가 많으면, 이것은 매우 까다로워질 수 있다.아래의 정보를 감안하여, 만약 우리가 아래의 코드를 시도한다면, 무슨 일이 일어날지.결과는 무엇일까요?# use variable
console.log(myVar);
# declare and initialize variable
aar myVar = 'variable';
이 문제의 답안은 아직 명확하지 않다.왜?컴파일러가 실행될 때, 먼저 undefined의 변수를 설명하고 스크립트를 실행하기 때문입니다.컴파일러는 이 코드를 이렇게 해석할 것이다var myVar; # undefined
console.log(myVar); # output myVar
myVar = 'variable'
또 다른 예.sayHello();
function sayHello(){
console.log('hello')
}
위 코드의 출력은 "Hello"입니다.왜?이것은 함수를 성명하거나 초기화하기 전에 사용할 수 있다는 것을 의미한다.이것은 성명된 함수에만 적용되고 함수 표현식에는 적용되지 않는다.var &function 키워드가 있는 설명이 향상되어 스크립트의 어느 곳에서든 사용할 수 있습니다.초기화되지 않은 경우 정의되지 않은 상태로 돌아갑니다.키워드let &const가 향상되지 않았습니다. 이것은 인용 오류가 발생하지 않고 어느 곳에서도 사용할 수 없다는 것을 의미합니다.그래서 마지막으로let &const 변수에 값을 부여하기 전에 사용할 수 없습니다.닫기
뭐가 끝이야?패키지를 닫는 것은 어떻게 우리가javascript를 이해하는 것을 도와줍니까?함수가 성명되었을 때, 함수도 새로운 역할 영역을 만들 것입니다.이 함수 작용역에서 성명된 변수는 이 함수에 속하는 문법/사유 작용역에 포함됩니다.함수도 상하문을 외부로 찾습니다. 일부 변수가 함수 범위 내에서 정의되지 않으면 함수는 범위 체인 밖에서 찾고 외부 범위 내에서 인용된 변수를 검색합니다.이것이 마무리의 의미다.
결론
나는 본고가 끝날 때, 당신이 모든 줄 코드에서 발생하는 일을 어떻게 만들고 이해하는지 배울 수 있기를 바랍니다.코드의 작업 원리를 충분히 이해하는 것은 매우 중요하다. 코드는 당신이 더 좋은 개발자가 될 수 있을 뿐만 아니라, 현재 사용하고 있는 도구를 더욱 효율적으로 사용할 수 있도록 도와줄 수 있다.
이 글들은 주로 개인적인 용도로 사용되어 내가 더 좋은 프로그래머, 작가가 되고 프로그래밍 기술을 향상시키는 데 도움을 준다.만약 당신이 나와 다른 사람들을 돕기 위해 어떤 피드백이나 수정을 해야 한다고 생각한다면 언제든지 포기하세요.오늘까지 시간을 내주셔서 감사합니다!
Reference
이 문제에 관하여(범위 및 끝), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cleveroscar/scope-closure-27fh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)