범위는 JavaScript의 가장 중요한 개념 중 하나입니다. JavaScript를 잘 배우려면 JavaScript 범위와 스코프 체인의 작동 원리를 이해해야합니다. 오늘의 기사는 모든 사람이 JavaScript를 더 잘 배우도록 돕기 위해 JavaScrip Scope 예제에 대한 자세한 설명을 소개합니다.
모든 프로그래밍 언어에는 범위가 있습니다. 간단히 말해서, 범위는 접근 가능한 변수 및 함수 범위, 즉 범위가 변수 및 함수의 가시성 및 수명주기를 제어합니다. JavaScript에서 변수의 범위는 전역 및 로컬입니다.
1. JavaScript의 블록 수준 범위가 없습니다
Java 또는 C#에는 블록 레벨 범위가 있습니다. 즉, 버팀대도 범위입니다.
public static void main () {if (1 == 1) {문자열 이름 = "7";} system.out.println (name);} // 오류를보고 공개 static void main () {if (1 == 1) {string name = "7";} console.writeline (name);JavaScript의 블록 수준 범위가 없습니다
함수 main () {if (1 == 1) {var name = 'seven';} console.log (name);} // 출력 : 72. JavaScript는 함수 범위를 채택합니다
JavaScript에서 각 기능은 범위로 작용하며 내부 범위의 변수는 외부에서 액세스 할 수 없습니다.
function main () {var innerValue = 'Seven';} main (); console.log (innerValue); // 오류 : uncught referenceError : InnerValue가 정의되지 않았습니다.3. JavaScrip 스코프 체인
JavaScript의 각 함수는 범위이므로 함수 중첩 함수가 나타나면 스코프 체인이 나타납니다.
xo = 'alex'; function func () {var xo = "7"; funner inner () {var xo = 'Alvin'; console.log (xo);} inner ();} func ();예를 들어, 위의 코드는 3 개의 스코프로 구성된 스코프 체인에 나타납니다. 스코프 체인이 나타나면 변수를 찾을 때 순서가 나타납니다. 위의 예를 위해 :
Console.Log (XO)가 실행되면 검색 순서는 스코프 체인의 우선 순위에 따라 내부에서 외부로 검색하는 것입니다. 내부 층이 존재하지 않으면 예외가 발견되지 않을 때까지 점차적으로 조회됩니다.
4. JavaScript의 스코프 체인은 실행 전에 생성되었습니다
JavaScript의 범위는 실행되기 전에 생성되었습니다. 미래에 실행되면 스코프 체인에 따라 검색하면됩니다.
Example 1:
xo = 'alex'; function func () {var xo = "seven"; function inner () {console.log (xo);} 내부를 반환합니다.} var ret = func (); ret (); // 출력 결과 : 7위의 코드는 함수가 호출되기 전에 이미 존재합니다.
• 글로벌 스코프-> func 함수 범위-> 내부 함수 범위
[ret ();]을 실행할 때 내부 함수를 지칭하기 때문에이 함수의 스코프 체인은 다음과 같이 정의되었습니다. Global Scope-> func function scope -> 내부 함수 스코프, [ret ();]을 실행할 때 기존 범위 체인을 기반으로 변수가 발견됩니다.
Example 2:
xo = 'alex'; function func () {var xo = "eirc"; function inner () {console.log (xo);} xo = 'seven'; return 내부;} var ret = func (); ret (); // 출력 결과 : 7위의 코드는 예 1과 동일한 목적을 가지며, 또한 함수가 다음과 같은 범위 체인이 이미 존재한다는 것을 강조합니다.
• 글로벌 스코프-> func 함수 범위-> 내부 함수 범위
다르게, [var ret = func ();]을 실행할 때 func 스코프의 XO 변수의 값은 "Eric"에서 "7"으로 재설정되었으므로 [ret ();]를 실행할 때는 "7"만 찾을 수 있습니다.
Example 3:
xo = 'alex'; <br> function bar () {console.log (xo);} function func () {var xo = "seven"; return bar;} var ret = func (); ret (); // 출력 결과 : Alex위의 코드에서는 함수가 실행되기 전에 두 개의 스코프 체인이 생성되었습니다.
• 글로벌 범위-> 바 기능 범위
• 글로벌 스코프-> func 함수 범위
[ret ();]를 실행할 때 Ret는 막대 함수를 지칭하고 막대 함수의 스코프 체인이 이미 존재합니다. Global Scope-> Bar Function Scope, 실행시 기존 스코프 체인을 기반으로 검색됩니다.
5. 미리 진술
변수를 생성하지 않고 JavaScript에서 직접 사용하면 오류 가보고됩니다.
console.log (xxoo); // 오류 : upphed 참조 우리 : xxoo는 정의되지 않았습니다
JavaScript에서 값을 할당하지 않고 값이 생성되면 값은 다음과 같이 정의되지 않습니다.
var xxoo; console.log (xxoo); // 출력 : 정의되지 않은
이것이 함수로 작성된 경우 :
function foo () {console.log (xo); var xo = 'seven';} foo (); // output : undefined위의 코드는 오류를보고하지 않지만 정의되지 않은 출력. 그 이유는 JavaScript 함수가 실행되기 전에 값을 할당하지 않고 모든 변수를 선언하기 때문입니다. 따라서, "사전 컴파일"할 때 함수가 이미 VAR XO를 실행 한 것은 위의 예와 같습니다. 따라서 위의 코드의 출력은 정의되지 않았습니다.
위는 편집기가 소개 한 JavaScripe 샘플에 대한 자세한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!