JS 의 역할 영역 이해

3225 단어
역할 역 은 기초 이지 만 매우 중요 한 개념 으로 초보 자 에 게 역할 역 을 깊이 이해 하 는 것 은 전단 진급 의 기초 이다.
1. 역할 영역 이란 무엇 인가
쉽게 말 하면 역할 도 메 인 은 프로그램 소스 코드 에서 변 수 를 정의 하 는 구역 이자 코드 의 현재 컨 텍스트 환경 입 니 다. 더 좋 은 설명 은 메모리 에서 열 린 공간 입 니 다. 자바 스 크 립 트 는 품사 역할 도 메 인 을 사용 하 는 동시에 정적 역할 도 메 인 이 라 고도 부 릅 니 다.
정적 역할 영역, 동적 역할 영역:
var a= 1;

function fun1() {

    console.log(a);
}

function fun2() {

    var a= 2;

    fun1();
}

fun1();   // 1

JavaScript 는 정적 역할 영역 을 사용 하기 때문에 그의 실행 과정 은 다음 과 같 습 니 다.
fun 1 함 수 를 실행 하고 fun 1 함수 내부 에서 부분 변수 a 가 있 는 지 찾 습 니 다.없 으 면 위의 코드, 즉 a 는 1 이 므 로 최종 결 과 는 1 입 니 다.
그렇다면 자 바스 크 립 트 는 동적 역할 영역 을 사용 하고 있 습 니 다. 그의 집행 은 어떻게 되 었 습 니까?
fun 1 함 수 를 실행 하고 fun 1 함수 내부 에서 부분 변수 a 가 있 는 지 찾 습 니 다.없 으 면 fun 1 을 호출 하 는 함수 에서 a, 즉 fun 2 함수 에서 a 변 수 를 찾 습 니 다. 이렇게 실 행 된 결 과 는 2 입 니 다.
2. 역할 영역 간 의 차이
function a() {

    function b() {   

       c = 1; 
   }
}

문 제 를 제기 하면 c 의 역할 영역 은?b 의a 의아, 원래 전체적인 것 이 었 군요. 앞 에 var 가 없 었 기 때 문 입 니 다.
부분 역할 영역:
함수 내부 와 같은 고정된 코드 세 션 에서 만 접근 할 수 있 습 니 다.
직접 코드 올 리 기:
function fun1() {

      var a = 1;

      console.log(a);
}

fun1();   //   1



function fun2() {

      var b = 2;    //   b         
}

fun2();

console.log(b);   //     :b b is not defined

전역 역할 영역:
var c = 3;

function fun3() {

     console.log(c);
}

fun3();   //   3


function fun4() {

      d = 4;    //   
}

fun4();

      console.log(d);   //   4

위의 두 가지 예 에서 볼 수 있 듯 이 함수 내 부 는 외부 변 수 를 방문 할 수 있 고 함수 외부 에 서 는 함수 내부 변 수 를 방문 할 수 없습니다.이 곳 에서 주의해 야 할 것 은 프로 세 스 외부 라면 var 와 var 로 정의 하지 않 는 변 수 는 모두 전역 변수 이지 만 프로 세 스 내부 에서 var 로 정의 한 변 수 는 국부 변수 이 고 var 로 정의 하지 않 은 변 수 는 전역 변수 입 니 다.
3. ES6 에 추 가 된 let 역할 영역
ES6 가 나타 나 기 전에 블록 급 역할 구역 의 개념 이 없 으 면 일부 상황 에서 국부 변 수 는 전체적인 변 화 를 오염 시 킬 수 있다. 예 를 들 어:
var a = 1;

function fun1() {

      var a = 2;

      console.log(a);
}

fun1();   //   2         fun1    a,         a,       。

ES6 의 블록 급 역할 영역 은 {}, for, if 에서 설명 할 수 있 습 니 다.
ES6 는 몇 가지 특징 이 있 습 니 다.
1. let 는 블록 급 변수 로 window 에 존재 하지 않 습 니 다. window. 변수 이름 은 찾 을 수 없 는 2 입 니 다. 성명 이 없 는 상태 에서 사용 하면 이상 3 을 던 지고 중복 성명 변 수 를 허용 하지 않 습 니 다. 즉, 변수 이름 이 유일 합 니 다.
let a = 1;

window.a;   //   undefined



function fun1(){

        console.log(b);

        let b =2;
    }

    fun1();  //         fun1 is not defined



function fun2() {

     let c =2;

     var c = 3;

     console.log(c);
}

fun2();   //         Identifier 'b' has already been declared

let for 순환 에서 의 사용: (var 먼저 보기)
for(var i=0; i<2; i++){

    console.log('outer i: ' + i);

    for(var i=0; i<2; i++){

    console.log('inner i: '+i);   //           ,  i        i           

    }
}

결 과 는:
outer i: 0 inner i: 0 inner i: 1
var 를 let 로 바 꾸 기:
for(var i=0; i<2; i++){

    console.log('outer i: ' + i);

    for(let i=0; i<2; i++){

    console.log('inner i: '+i);   //                  

    }
}

결 과 는:
outer i: 0 outer i: 0 inner i: 0 inner i: 1 outer i: 1 inner i: 0 inner i: 1

좋은 웹페이지 즐겨찾기