- 어휘 단계
- 어휘의
- 소스 코드를 확인 문자
- 어휘 범위 지정
- 여기서 작성하는 범위 변수를 차단하고 결정하는 코드를 작성할 때
- 검색 범위 식별자의 제 매치 정차
- 그래서, 같은 이름 식별자를 오버라이드 (override)가있을 것입니다
- 범위는 항상 가장 안쪽 범위에서 시작되는 런타임에
- 점진적 외향 범위 사슬
- 알 따른 범위 체인을 찾을 수없는 변수 최 범위에서 시작 실행 요컨대, 제 OK, 일치하는 식별자가 발견
- 어휘의
- 어휘 범위 변경
- 평가
function foo(str, a) { eval(str); console.log(a, b); } var b = 2; foo("var b = 3;", 1); // 1, 3
- 아무 소용이 엄격 모드에서 평가
function foo(str) { "use strict"; eval( str ); console.log( a ); // ReferenceError: a is not defined } foo( "var a = 2" );
- 엄격 모드에서는 평가 런타임에 자신의 어휘 범위가
- 문자열을 삽입 할 수 선언문을 포함하는 평가 (..)를 태그, 어휘 범위 지정 런타임을 수정
- 와
var obj = { a: 2, b: 3 }; function fo(obj) { with (obj) { b = 5; } } var o = { b: 33 }; var p = { a: 23 }; fo(o); console.log(o.b); // 33 fo(p); console.log(p.b); // undefined
- 속성을 만들지 않습니다, 속성 B 피하지 않고 개체, O 객체는 속성이 있습니다
- 해당 범위로 객체에 대한 참조 문은 객체 식별자 범위의 속성으로, 새로운 런타임 어휘 범위를 작성, 처리하는 .
- 평가는 컴파일시에 엔진 범위 효과의 최적화, 그것은 천천히 시작하고.
- 평가
- 범위와 범위 기능 블록
내부 숨기기 구현
최소 권한 원칙 (최소 노출의 원칙)
- 최소 노출 필요한 내용.
그래서 모든 변수와 함수는 전역 범위에서 선언
function doSomething(a) { b = a + doSomethingElse(a * 2); console.log(b * 3); } function doSomethingElse(a) { return a - 1; } var b; doSomething(2); // 15
B 변수 및 함수는 doSomethingElse () 함수 해봐요 () 전용 콘텐츠, 외부 영역에 대한 액세스 기능 숨겨져 개인 콘텐츠 것, 위험 할 수있다.
function doSomething(a) { var b; function doSomethingElse(a) { return a - 1; } b = a + doSomethingElse(a * 2); console.log(b * 3); }
숨겨진 장점
어휘 범위 지정
추천
출처www.cnblogs.com/wydumn/p/11575435.html
추천
행