JavaScript 테마 (2) 내 눈 에 보 이 는 패키지
코드 를 쓰 는 척:
, , , 0 1;
, , , abcd;
, , JS??? ?
패키지 정의:
패 킷 닫 기 는 다른 함수 역할 영역 에 접근 할 수 있 는 변 수 를 말 합 니 다.
오늘 은 함수 내부 가 어떻게 작 동 하 는 지 모 르 겠 습 니 다. 함수 에 봉인 되 어 문법 에 의 해 정의 되 었 습 니 다. 저 는 toString () 이 문자열 을 되 돌려 주 는 것 이라는 것 만 알 면 됩 니 다.이것 은 사실 폐쇄 적 인 것 이다.
나 는 내 가 어떤 방식 으로 정 보 를 얻 을 수 있다 는 것 만 알 면 된다.이런 방식 은 폐쇄 다.
function (){ //
var =xxx;
return function ( ){
xxx, ;
}
}
var = ();
( );
// , ( )xxx, ( )
C + + 또는 비슷 한 언어 를 배 운 적 이 있 는 사람 은 이런 개인 변수 와 비슷 하 다 는 것 을 알 수 있 습 니 다. 그 렇 죠?우 리 는 인터페이스 함수 로 가 져 올 수 있 지만 직접 가 져 올 수 는 없다.
(1) 패 킷 을 닫 는 것 은 디자인 원칙 으로 문맥 을 분석 함으로써 사용자 의 호출 을 간소화 하고 사용자 가 모 르 는 상황 에서 그의 목적 을 달성 하도록 한다.(2) 인터넷 주류 의 패 킷 분석 글 은 실제 적 으로 패 킷 원칙 과 반대 되 는 것 이다. 패 킷 디 테 일 을 알 아야 잘 사용 할 수 있다 면 이 패 킷 은 디자인 에 실패 한 것 이다.(3) 되도록 공 부 를 적 게 해라.http://kb.cnblogs.com/page/110782/
사실 우 리 는 두 가지 측면 에서 볼 수 있다.a. 디자이너 의 측면 에서 볼 때 사용 자 는 데 이 터 를 직접 얻 을 수 없다. 사실은 데이터 의 개인 을 실현 한 것 이다.b. 사용자 의 측면 에서 볼 때 사용 자 는 다른 방식 (이 방식 은 더욱 간단 하고 편리 할 수 있 으 며 구체 적 으로 디자이너 에 따라 정 해진 것) 을 통 해 데 이 터 를 얻 거나 심지어 봉 인 된 데 이 터 를 조작 할 수 있다.
END. 계속 배우 고 싶 으 면 아래 를 보 세 요.
2. 변수의 일생:
따라서 변 수 를 없 애 려 면 전역 변수 라면 덮어 써 야 합 니 다. 부분 변수 라면 그 방법 이 끝 날 때 까지 기다 리 면 자동 으로 삭 제 됩 니 다.function test(){var a=3;}
alert(a); //error,a
for(var a=3;a<10;a++){}
alert(a); // 10, a ,
function test(){
var a=3;
return function(){
return a;
}
}
b=test();
외부 에서 a 를 출력 할 수 없습니다. 접근 할 수 없 기 때 문 이지 만 a 는 메모리 에 존재 합 니 다.내부 함수 가 외부 변수 a (인용 계수 법 쓰레기 제거, 0 이면 삭제) 를 인용 하기 때문에 a 는 아직도 걱정 되 고 자 연 스 럽 게 사라 지지 않 습 니 다.
3. 익명 함수:
function I_have_name(){//do something}
// , "I_have_name"
function (){//do something}
// ,
(function (){
alert(3);
})(); //
(function auto(){
alert(3);
})(); // ,
// auto ?( )
//--------------------------------------------------
// ,
function(){
alert(3);
}(); // !!!!!!!!!!!!!!
왜 (function {/ code}) ();실행 할 수 있 습 니 다. function {/ code} ();잘못 보고 할 까?답: 1. 우 리 는 그들의 차 이 를 보 았 습 니 다. 사실은 전 자 는 함수 성명 이 라 고 부 르 고 후 자 는 함수 표현 식 이 라 고 부 릅 니 다.2. JS 의 사전 컴 파일 할 때 함수 설명 을 먼저 보고 함수 표현 식 을 무시 합 니 다.성명 에 뒷문 을 열 어 준 것 처럼.3. JS 가 정식으로 컴 파일 되 었 을 때 명 시 된 함 수 는 (function {/ code} 을 보고 건 너 뛰 었 습 니 다. 컴 파일 되 었 기 때문에 () 이것 만 볼 수 있 습 니 다.
!function(){}() (function(){})()
~function(){}() void function(){}()
6. 자체 실행 함 수 는 인 자 를 가 져 올 수 있 습 니 다. 형식 은 이 렇 습 니 다!
function(num){
alert(num);
}(3); 3
4. 폐쇄 함정
그리고 우 리 는 흔히 볼 수 있 는 폐쇄 사례 를 말 하 는데 이것 은 폐쇄 적 인 부작용 이다.
var arr=[1,2,3];
var obj={};
var test=function(){
for(var i=0;i
정상 적 인 사고 에 따 르 면 마지막 으로 obj [0] = 0, obj [1] = 1, obj [2] = 2 여야 하지만 진정한 과정 은 이렇다.
var test=function(){
for(var i=0;i
위 에 있 는 것 을 알 게 되면 알 게 될 것 입 니 다. 네! 저 는 익명 함 수 를 사 용 했 습 니 다! 매개 변수 가 있 는 익명 함 수 를 사 용 했 습 니 다. 여기 (i) 는 외곽 지역 에 있 습 니 다. obj [i] 에서 i 와 똑 같 습 니 다. 내부 함수 로 서 canshu 에 할당 되 었 습 니 다. 그래서 즉시 값 에 따라 전 달 됩 니 다!!(PS: 자신 이 발명 한 단 어 는 참고 만 하 세 요. 중요 한 문 제 는 밑바닥 이 어떻게 돌아 가 는 지 모 르 겠 습 니 다. 인용 이 라 고 하면 서도 이상 하 다 고 생각 합 니 다)
이 과정의 실현 도 폐쇄 가 가 져 온 함정 을 피 하 는 데 성공 했다.
5. 가방 닫 기 살 펴 보기:
사실 우 리 는 심지어 전체 환경 에서 쓴 function 은 모두 폐쇄 적 이 라 고 말 할 수 있다.
참고 문헌 1. 슈퍼 추천 글 2. 폐쇄 가 무엇 인지, 폐쇄 의 장단 점 3. 자바 script 폐쇄 - 알 겠 느 냐 못 알 겠 느 냐 는 너 에 게 달 려 있다. 어쨌든 나 는 알 겠 다 4. 익명 함수 분석
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.