> 웹 프론트엔드 > JS 튜토리얼 > js_javascript 스킬에서 즉시 호출되는 함수 표현식 작성 방법

js_javascript 스킬에서 즉시 호출되는 함수 표현식 작성 방법

WBOY
풀어 주다: 2016-05-16 17:04:07
원래의
1210명이 탐색했습니다.

함수를 명시적으로 호출할 필요가 없고 함수가 정의되었을 때 실행되도록 하려면 어떻게 작성해야 할까요? 다음으로 구현 단계를 자세히 소개합니다. 관심 있는 친구들이 배울 수 있습니다

1. 서문
함수를 먼저 정의한 후 사용해야 합니다. 이는 기본적으로 모든 프로그래밍 언어의 철칙입니다.
일반적으로 JavaScript 함수를 호출해야 하는 경우 기본 상황은 함수를 먼저 정의한 다음 호출하는 것입니다. 예시를 보세요
코드는 다음과 같습니다

코드를 복사합니다 코드는 다음과 같습니다


< ;head>
;/title>

<script> <BR>//함수 정의 <BR>function sayHello() <BR>alert(" hello"); <BR>} <BR>//함수 호출 <BR>sayHello(); <BR></script>




그런데 그렇지 않다면 함수가 정의되었을 때 실행될 수 있도록 명시적으로 호출해야 한다면 어떻게 작성해야 할까요?

2. 사고과정
위의 예를 보면 위의 사용 조건을 똑똑히 조합하면 다음과 같이 생각할 수 있습니다.
===》함수 이름이 Can 뒤에 추가되므로 함수 정의 뒤에 중괄호 쌍을 추가하여 이전 쌍을 실행합니까? 다음과 같습니다.
코드는 다음과 같습니다.




코드를 복사합니다alert("hello");
}();


안타깝게도 위의 작성 방법은 js 구문을 보고합니다. 오류.
자바스크립트 파서는 전역 함수나 함수 내부 함수 키워드를 파싱할 때 기본적으로 함수 표현식 대신 중괄호를 함수 명령문으로 파싱하기 때문입니다.
즉, 마지막 중괄호 쌍은 기본적으로 이름이 없는 함수로 구문 분석되며, 함수 선언에 이름이 필요하기 때문에 구문 오류 메시지가 발생합니다.

===》 중괄호 안에 매개변수를 전달하면 표현식으로 파싱될까?라고 생각할 수도 있습니다.
코드는 다음과 같습니다.




코드 복사alert("hello");
}(1)


실제로 오류가 사라졌습니다. 하지만 위의 작성 방법은 다음 작성 방법의 효과와 동일합니다
코드는 다음과 같습니다.



코드 복사alert("hello")
}; 🎜>
이 두 문장은 서로 관련이 없습니다.

3. 올바른 쓰기
JavaScript의 경우 괄호() 안에 명령문을 포함할 수 없으므로 에서 이 시점에서 파서가 function 키워드를 파싱할 때 해당 코드는 함수 선언이 아닌 함수 표현식으로 파싱됩니다. 따라서 전체 코드(함수 부분과 마지막에 중괄호 쌍 포함)를 포함하면 됩니다. 바지 멜빵.
코드는 다음과 같습니다.



코드 복사


코드는 다음과 같습니다.
다음을 제거하는 또 다른 작성 방법이 있습니다. 중괄호
코드는 다음과 같습니다.



코드 복사


코드는 다음과 같습니다.
첫 번째 방법을 사용하는 것이 좋습니다.
그러나 현재 더 나은 js 라이브러리 중 다수는 두 번째 방법을 사용하고 있습니다.
예: 웹 그래픽 드로잉: git, draw2d,....
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿