자바스크립트 범위
2212 단어 scopejavascript
범위에 대한 또 다른 사고 방식: 변수 또는 함수 이름과 같이 특정 식별자가 표시되거나 액세스 가능한 프로그램 부분입니다.
내가 범위에 대해 불평하는 이유는 다음과 같은 이유 때문입니다.
예제에 들어가기 전에 어떤 유형의 범위가 존재하는지 알아야 합니다.
글로벌
함수나 블록(중괄호 한 쌍) 안에 있지 않은 변수는 전역 범위 안에 있습니다.
기능
함수 내부에서 선언된 모든 변수는 해당 함수 내에서만 액세스할 수 있습니다. 즉, 외부에서는 액세스할 수 없습니다.
차단하다
ES6에서는 var와 달리 let 및 const 변수를 도입했으며 범위를 가장 가까운 중괄호 쌍으로 지정할 수 있습니다. 즉, 해당 쌍 외부에서 액세스할 수 없습니다.
마지막으로 JavaScript가 변수 값을 찾는 방법입니다.
여전히 변수를 찾을 수 없으면 전역 범위에서 변수를 암시적으로 선언하거나 오류를 반환합니다.
예시 시간:
글로벌
var meow = 'Meow';
function cat () {
return meow
}
// value returned by cat is 'Meow'
cat()
console.log(meow) // Prints 'Meow'
이 경우 변수 meow는 전역 범위에 있기 때문에 오류를 반환하지 않으며 함수 범위나 블록 범위가 아니므로 어디에서나 액세스할 수 있습니다.
기능
function cat () {
var meow = 'Meow';
return meow
}
// value returned by cat is 'Meow'
cat()
console.log(meow) // Uncaught ReferenceError: meow is not defined
고양이 외부에서 야옹에 접근하려고 하면 고양이 함수에서만 야옹에 접근하거나 볼 수 있기 때문에
Uncaught ReferenceError: meow is not defined
를 반환합니다.차단하다
if(true) {
const cat = 'meow';
var meow = 'Meowwwww!!!!';
console.log(cat); // Prints 'meow'
}
console.log(cat); // Uncaught ReferenceError: cat is not defined
console.log(meow); // Prints 'Meowwwww!!!!'
그래서 여기서 무슨 일이 일어나고 있는지, 변수 cat은 중괄호 또는 블록 범위 때문에 if 문에 바인딩됩니다.
이 경우 if 문 외부에서 액세스한 변수 cat if는 위에서 정의한 대로 오류를 반환하지만 meow는 블록 범위가 아니므로 예상 값을 반환합니다. const 및 let 변수는 블록 범위임을 기억하십시오.
요약
Reference
이 문제에 관하여(자바스크립트 범위), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/scorreaui/javascript-scope-e45텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)