JavaScript의 범위와 범위 체인은 많은 기술 문서를 읽는 데 많은 시간을 보냈지 만 이해할 수 없었기 때문에 내 학습에서 가장 고통스러운 부분입니다. 나는 그것이 무엇을 의미하는지 대략 알았지 만 여전히 이유를 말할 수 없었습니다.
광범위한 테스트와 기술 문서를 읽음으로써 다음의 이해를 요약했습니다. 그것은 기술적이지는 않지만 실제로 이해할 수 있습니다.
1. JavaScript는 글로벌 및 로컬로만 나뉘어져 있으며 해당 배경 언어에 대한 다양한 수정자가 없습니다. 함수에서 var를 사용하지 않으면 글로벌입니다. 다음과 같이 :
<script type = "text/javaScript"> varname = "c#"; // global Window.name = "java"; // global varlanguage = function () {alert (이름); 이름 = "JavaScript"; // global var name = "js"; // local alert (name); } () alert (이름); </스크립트>위의 코드는 전 세계적으로 동일한 변수를 모두 나타내며 다음 정의는 위의 정의를 대체합니다. 세 가지 경고, 즉 Underfind, JS 및 JavaScript와 관련하여. 이것이 역할을하는 범위입니다.
2. 스코프 체인은 레벨 0에서 시작하여 순서대로 아래쪽으로 배열됩니다. 소위 아래쪽으로 순서대로 아동의 배열을 나타냅니다. 변수를 찾을 때는 먼저 같은 수준에서 변수를 찾은 다음 부모 수준을 찾으십시오.
위의 예에서
가장 먼저 나타나는 것은 언어 방법의 첫 번째 경고입니다. 글로벌 창이 0 인 경우, 예제에서 var name = "js"는 1입니다. 첫 번째 경고는 1에서 찾을 수 있습니다. 찾을 수없는 경우 0에서 찾을 수 있습니다. 이것은 같은 수준에 var name = "js"가 있지만 값을 할당하지 않았으므로 Underfind가 팝업됩니다.
두 번째 팝업은 언어 메소드의 두 번째 경고이며, 그는 1, 즉 메소드 내부에서 찾을 것입니다. 그는 이름을 발견하고 JS를 할당 했으므로 팝업은 JS입니다.
세 번째 팝업은 바닥의 경고입니다. 이 메소드 내에서 글로벌 이름이 재 할당되었으므로 JavaScript가 팝업됩니다.
그런 다음 다음 링크를 추가하면 다음과 같이 언어의 메소드를 맨 위에 올리십시오.
<scriptType = "text/javaScript"> varname = "javaScript"; // global swooin 이름 = "JavaScript"; // global varname = "js"; // local alert (name); var lovelanguage = function () {alert (name); } (); } () alert (name); </script>현재 Lovelanguage의 경고는 언어의 이름 인 언어 수준에서 이름을 찾을 수 있기 때문에 JS와 함께 나타납니다. . .
위의 것은 편집자가 가져온 JavaScripe 범위와 스코프 체인 (초보자를 위해 필수)의 모든 내용입니다. 모두가 풋 스텝 홈을 더 지원하기를 바랍니다.