범위 작동 방식 및 관심을 기울여야 하는 이유
다시 말씀드리겠습니다.
범위는 코드베이스에서 데이터에 액세스할 수 있는 위치로 귀결됩니다.
그게 왜 중요합니까? 글쎄, 실제 세계 시나리오를 상상해보십시오. 코드베이스가 집이고, 데이터가 집에 있고, 범위가 집에 저장되는 위치라고 가정해 보겠습니다.
집에 있는 모든 것을 저장하고 집의 다른 곳에서 액세스할 수 있다면 머지 않아 엄청나게 지저분하고 정리되지 않은 집이 생겨서 무엇이든 찾고 사용하는 데 영원히 걸릴 것입니다. 은그릇 서랍에 칫솔이 있고 소파 쿠션에 속옷이, 옷장에 예술품이 있는 집을 상상해 보십시오. 무슨 난장판이죠? 그곳에 사는 것은 곧 버틸 수 없게 될 것입니다.
🤫 참고사항
집이 실제로 이렇다면
Marie Kondo 당신을 구할 수 있습니다.
그래도.
조직적이고 접근 가능한 집의 동일한 원칙이 범위에 적용됩니다.
내 모든 데이터가 내 프로그램의 어디에서나 액세스할 수 있다면 사용하기 위해 검색하는 데 몇 시간을 소비해야 하는 노출된 변수와 추적할 수 없는 완전히 압도된 가비지 수집기가 빠르게 엉망이 될 것입니다. 중요한 것과 그렇지 않은 것. 모든 것을 글로벌 범위에 포함하는 것이 불가능하다는 것이 아니라 정말 나쁜 생각일 뿐입니다.
JS에는 세 가지 일반적인 유형의 범위가 있습니다.
글로벌 범위
전역 범위를 사용하면 프로그램의 어디에서나 데이터(변수에 저장된)에 액세스할 수 있습니다. 또한 프로그램의 어느 곳에서나 변경할 수 있으므로 기본적으로 전역 변수를 사용하여 변경할 수 없도록 CONST로 선언하지 않는 한 전역 변수를 사용하는 것은 정말 끔찍한 생각입니다. 함수 외부의 변수로 설정하여 데이터를 전역으로 만들 수 있습니다. var와 const만 사용하여 전역 변수를 선언할 수 있습니다.
const someStuff = "things"
console.log(someStuff)
>> "things"
function sayStuff(){
console.log(someStuff);
};
sayStuff()
>> "things"
보시다시피 전역 범위 변수인 someStuff는 내 프로그램의 모든 함수 내부와 외부에서 액세스할 수 있습니다.
로컬 범위
로컬 범위를 사용하면 데이터가 선언된 함수 내부 어디에서나 데이터에 액세스할 수 있습니다. 변수는 여전히 변경 가능하지만 변수가 기능에 묶여 있기 때문에 예상치 못한 끔찍한 방식으로 전체 프로그램에 영향을 미치지 않습니다. 함수 실행이 완료되면 변수와 그 안에 포함된 데이터는 가비지 수집되고 더 이상 존재하지 않습니다. 해당 함수를 다시 호출할 때까지.
function sayHello(){
var greeting = "Hello!"
console.log(greeting);
}
sayHello()
>>"Hello!"
console.log(greeting)
>> ReferenceError: greeting is not defined
그래서 여기서 변수
greeting
가 함수sayHello()
내부에만 존재한다는 것을 알 수 있습니다. 일단 함수 외부에서 변수를 호출하려고 시도했습니다. 그것은 더 이상 존재하지 않았습니다. 따라서 우리는 var greeting
가 함수 sayHello()
로 LOCALLY 범위라고 말할 수 있습니다.블록 범위
마지막으로 중요한 것은 블록 범위입니다. 블록 범위 내에서 생성된 데이터는 생성된 함수의 블록 내에서만 사용할 수 있습니다. 이것은 매우 특정한 경우에만 사용하려는 단기 데이터가 있을 때 유용합니다. if
if
문이 true를 반환하는 것과 같습니다.function rememberMe(name){
if(name.includes("Akira")){
let recognition = `Omg, hi, ${name}! I remember you!`
console.log(recognition);
} else {
let recognition = `I'm sorry, I don't remember you, ${name}...`
console.log(recognition)
};
}
여기에서 볼 수 있듯이
let
키워드를 사용하면 해당 블록 내에서만 변수 이름recognition
을 사용할 수 있습니다. 첫 번째 블록이 끝난 후 JavaScript의 가비지 수집기가 블록 실행이 완료된 후 해당 블록 변수를 지워버렸기 때문에 let
와 동일한 변수 이름을 recognition
로 새 블록 변수를 설정할 수 있습니다. 따라서 여기서 변수let recognition
는 BLOCK 범위가 특정 블록으로 지정되었습니다.참고: 블록은 한 쌍의 중괄호 사이에 아무 말도 하지 않는 멋진 방법입니다.
그래서, 당신은 그것을 가지고 있습니다! 범위를 파악했습니다.
아래에 의견이나 수정 사항을 남겨주세요. 건설적인 피드백을 듣게 되어 기쁩니다!
Reference
이 문제에 관하여(범위 작동 방식 및 관심을 기울여야 하는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/akiramakes/how-scope-works-why-you-should-care-5ale텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)