함수 역할 영역 및 즉시 실행 함수 표현 식
JavaScript 함 수 는 특정한 코드 블록 을 말 합 니 다. 여러 개의 문 구 를 포함 할 수 있 으 며, 이름 을 통 해 다른 문 구 를 호출 하여 함수 에 포 함 된 코드 문 구 를 실행 할 수 있 습 니 다.
작용 역 은 변수 가 존재 하 는 범 위 를 가리킨다.JavaScript 는 두 가지 역할 영역 만 있 습 니 다:
함수 외부 에서 설명 하 는 것 은 전역 변수 입 니 다. 함수 내부 에서 읽 을 수 있 습 니 다.
var a = 1;
function fn() {
console.log(a);
}
fn(); // 1
함수 내부 에서 정 의 된 변 수 는 외부 에서 읽 을 수 없습니다. 이것 이 바로 부분 변수 입 니 다.
function fn() {
var b = 1;
}
b; // Uncaught ReferenceError: b is not defined
함수 자체 도 하나의 값 이 고 자신의 역할 영역 도 있 습 니 다.그 역할 영역 은 변수 와 마찬가지 로 성명 할 때 있 는 역할 영역 입 니 다. 실행 할 때 있 는 역할 영역 과 무관 합 니 다.
var a = 1;
function fn1(){
function fn2(){
console.log(a)
}
function fn3(){
var a = 4
fn2()
}
var a = 2
return fn3
}
var fn = fn1();
fn() // 2
위의 코드 에서 우리 가 필요 로 하 는 결 과 는
fn()
의 최종 출력 이다.우 리 는 먼저 층 층 이 위로 올 라 가 fn()
는 fn1()
과 같 기 때문에 fn1()
의 결 과 를 살 펴 보 자.fn1()
에서 정의 a
는 2 이 고 전체 변 수 를 덮어 쓰 는 a
은 1 이다.이때 우리 에 게 반환 값 은 fn3()
이 고 우 리 는 보 러 가 고 있다 는 것 을 알려 주 었 다 fn3()
.fn3()
안의 반환 값 은 fn2()
이 고 fn2()
직접 a
의 값 을 인쇄 했 으 며 a
의 값 을 설정 하지 않 았 다.이때 우 리 는 fn2()
의 아버지 층 에 가서 찾 아야 한다 a
.이때 발견 var a = 2
했 기 때문에 결 과 는 2 였 다.여기 서 우 리 는 역할 도 메 인 체인 을 통 해 결 과 를 찾 는 것 이 고 역할 도 메 인 체인 은 큰 역할 도 메 인 에서 형 성 된 관계 층 이다.하위 대상 은 모든 부모 대상 의 변 수 를 한 단계 한 단계 위로 찾 습 니 다.따라서 부모 대상 의 모든 변 수 는 하위 대상 을 볼 수 있 습 니 다.그러나 하위 대상 의 변 수 는 부모 대상 에 보이 지 않 습 니 다.
우 리 는 함 수 를 해석 할 때 다음 과 같은 규칙 을 준수 해 야 한다.
함수 표현 식 즉시 실행
자 바스 크 립 트 에서 한 쌍 의 괄호
()
는 함수 가 명 시 된 후에 이 함 수 를 호출 하 는 연산 자 입 니 다.예 를 들 어 fn()
는 호출 fn
함 수 를 나타 낸다.함수 표현 식 을 즉시 실행 하 는 것 은 JS 함 수 를 이용 하여 새로운 역할 영역 을 만 드 는 프로 그래 밍 방법 입 니 다.
때때로 우 리 는 함 수 를 정의 한 후에 즉시 이 함 수 를 호출 해 야 한다.이 때 함수 의 정의 뒤에 괄호 를 붙 일 수 없습니다. 문법 오류 가 발생 할 수 있 습 니 다.
funtion() {/* */}();
// Uncaught SyntaxError: Unexpected token {
function
표현 식 으로 도 사용 할 수 있 고 문장 으로 도 실행 할 수 있 기 때문이다.해석 상의 잘못된 의 미 를 피하 기 위해 자 바스 크 립 트 엔진 은
function
키워드 가 줄 의 첫머리 에 나타 나 면 일률적으로 문장 으로 해석 하도록 규정 하고 있다.해결 방법 은
function
줄 에 나타 나 지 않도록 엔진 이 표현 식 으로 이해 하도록 하 는 것 이다.( function () {} () );
( function () {} ) ();
! function () {} ();
~ function () {} ();
- function () {} ();
+ function () {} ();
이 서법 들 은 모두 가능 하 다.일반적으로 익명 함수 에 만 이러한 '즉시 실행 함수 표현 식' 을 사용 합 니 다.그것 은 세 가지 작용 이 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.