자바 스크립트의 범위와 폐쇄 범위 체인에

자바 스크립트, 액션, 및 범위 체인 폐쇄 설명

I. 스코프
JS 글로벌 및 국소 변수의 점을 갖는다 :
이러한
. VAR (1) = A,
함수 SUM () {
. VAR B = 1
. CONSOLE.LOG (B) 1 //
CONSOLE.LOG (A) // 2

}
합 ()
CONSOLE.LOG (a) // 3
CONSOLE.LOG (b) // 4

글로벌 변수의 예로는, (B)는 최초의 행을 수정하도록 (상기 기능은 내부적으로 액세스 할 수있는 기능 내에 정의 된) 로컬 변수
내부 기능하므로 전역 변수에 액세스 할 수있는 두 번째 행은 행 또한 정확 올바르게 제 할 수있다. 4 호선은 외부 액세스 할 수 없습니다
내부 변수를. 초기화의 변수 선언은 함수 호출에서 지역 변수의 완전한 파괴는 전역 변수가 닫혀있을 때 때 때 페이지의 파괴
(B는 VAR에 의해 수정되지 않은 방법을 참고, 글로벌 변수에 기본값)

두, JS 기능

1 일 함수의 함수 이름 () {
}
2 익명 함수 함수 () {}
. 3, 즉각적인 표현 기능으로 알려진 기능을 수행
(함수 (I) {
// dosometing
}) (I)

4, 전용 기능
함수 A () {
함수 B () {전용 기능 ====

  }

}

5 VAR 보내기 새로운 새로운 함수 = (// 해봐요)
.도 6은 가변 리프트의 기능을 향상시키기

주기 함수
전역으로 함수 또는 현재 기능 (JS 함수 일류 우선 시민이다) 동안 함수 1은 미리 선언 작동되며 JS 엔진 예비 분석 파싱 단계를 만드는 함수 로컬 스코프.
함수에서

구현 단계는, 함수가 실행 콘텍스트를 생성하며 JS 엔진은 현재의 로컬 변수와 미리 선언 된 내부 기능의 함수가 될 것이며, 그 기업 코드를 실행하는 기능 종료, 함수의 실행 컨텍스트의 릴리스 및 라이트 - 오프를 실행할 때 기능

지역 변수.

2 변수 함수 선언문 이상 ()

셋째, 범위 체인

도 1은, 제 함수 호출 JS 동작에서, 실행 환경 (실행 상황) 및 각 범위 체인 변수 선언을 작성하는 것 JS, 파라미터, 전용 기능 구성에 캡슐화 생체 내, 외부 세계에

범위 체인 볼 특정 내부 속성에 할당 말한다 ([범위). 이어서 this.arguments (인수 지구 환경에 존재하지 않는) 및 초기화 기능 파라미터 값이라는 다른 활성 객체 (활성화

객체). 현재 변수 오브젝트의 실행 환경은 항상 0의 위치 범위 체인

 例子

함수 A () {
VAR a 및
함수 B () {
복귀

}
리턴 B

}
VAR 재미는 () =
() 재미

 在JS运行上面机制  a函数作用链(scope chain )  b作用域链(b是内部函数)[scope chain]   会生成执行上下文变量  当代码在一个环境中执行时,会创建变量对象的一个作用域

체인. 범위 체인 모든 변수와 함수에 순차적 액세스를 보장 실행 환경 (실행 상황)에 액세스하는 사용.

변수 객체 (VO) : Object 변수는 변수가 일반 개체 및 차이뿐만 아니라, 우리가 접근 할 수없는 객체, 변수 객체가 포함되어 있습니다. 변수와 함수의 객체 저장 변수 선언의 맥락에서 규정

활성 객체 (AO) 입력 기능이 실행된다

        环境时刻被创建的,它通过函数的 arguments 属性初始化。

가변 객체 액티브 오브젝트 간의 관계

이전에 재산, 단지 문을 액세스 할 수있는 구현 단계, 변수 객체 (VO)를 입력하지만, 구현 단계를 입력하지

      之后,变量对象(VO)转变为了

속성 다음에 액세스 할 수 있고, 액티브 객체 (AO)는 작업의 구현 단계를 시작합니다. 그들은 실제로 같은 객체하지만 다른 라이프 사이클 실행 환경이다. AO 실제로 VO가 포함되어 있습니다. 때문에 VO, AO에 추가

또한, 함수 매개 변수 및 인수이 특정 개체가 포함되어 있습니다. 실제로 구현 단계로 AO가 작동되고있는 것으로,이 VO에 부가 활성화 될 때, 또한 수신시 파라미터 수행하는 기능을 포함
하고 인자는 특정 개체.

네, 자바 스크립트 폐쇄

  在js私有函数对外部函数产生引用或者变量依赖就会产生闭包 通俗的讲函数是可以嵌套函数的,内部function可以访问外部function的变量;通过引用访问函数内的函数,实现内存的

예약, 한계 변수의 범위를 깨는 액세스 함수 내 기능,

 var a=function(){
   var a的变量
      function b(){
          a++;
      }
      return b

}
들) (= A가 있습니다

 1、信息保留就是引用存在,空间不会因为函数(内部函数)销毁,而消失,

  
c.add1 ();

추천

출처blog.51cto.com/14582569/2476271