이틀 전, 수업 파티는 식사, 마시고, 재미 있고, 넌센스를 자지 않는 것을 제외하고는 너무 기뻤습니다. 재미를 갖는 것보다 혼자 재미를 갖는 것이 정말 좋습니다.
추신 : 졸업하거나 졸업하려는 경우 시간이 있으면 모일 수 있습니다. 졸업 후, 당신은 함께 할 시간이 너무 적을 것입니다.
이제 나는 무언가를보고 무언가를 요약 할 시간이 있습니다. 몇 분 전에 JavaScript 기능 부분을 보았 기 때문에 기능의 관련 부분을 요약하는 데 시간이 걸렸습니다. 물론, 그것의 일부 부분은 내 자신의 이해입니다. 잘못된 이해가 있다면 지적하십시오.
이 섹션에서는 내 자신의 이해에 근거하여 미리 기능 선언문에 대해 이야기하겠습니다.
참고 : 일부 지역에서는 기능 선언 프로모션이라고도합니다. 번역은 다르고 의미는 동일하며 이해합니다. 오랫동안 라이브 이해!
기능 선언 선언에 대해 미리 채팅하기 전에 대부분의 친구가 익숙 해야하는 여러 기능 정의 방법을 도입해야합니다. 이해하거나 이해하고 싶지 않다면 행복하게 롤 다운하십시오. 알고 있거나 익숙해지기를 원한다면 속도를 늦추고 시작하십시오.
함수를 정의하는 방법
함수를 정의하는 세 가지 주요 방법이 있습니다.
1. 기능 선언
2. 기능 표현 기능 표현)
3. 새로운 기능 생성자
그중에서도 함수 선언 및 기능 표현을위한 기능 정의 방법이 종종 사용됩니다. 이 두 가지 방법은 매우 미묘한 차이와 연결을 가지고 있으며,이 두 가지 방법의 사용은 혼란 스러울 수 있습니다. 따라서이 기사는 주로이 두 기능 정의 방법의 관련 지식 포인트를 요약합니다. 물론,이 기사의 주제는 여전히 기능에 관한 것입니다.
기능 선언을위한 일반적인 형식 :
functionname (arg1, arg2, ...) {<!-함수 body->}기능 표현
• 전형적인 기능 표현식 :
var variable = function (arg1, arg2, ...) {<!-기능 바디->}이름을 포함하는 함수 표현식 (브래킷, 기능 이름) :
var variable = function functionName (arg1, arg2, ...) {<!-함수 body->}위의 이름과 같은 이름을 가진 기능 표현식은 재귀에 사용될 수 있습니다.
var variable = function functionName (x) {if (x <= 1) return 1; 그렇지 않으면 x*functionName (x);} reto일정보다 앞서 진술
var 진술 사전
친구들은 미리 진술에 대해 들어 보았을 것입니다. 진술은 미리 함수 선언과 함수 표현식의 중요한 차이이며,이 두 가지 함수 정의 방법을 더 이해하는 것이 큰 의미가 있기 때문에 여기에 반복하고 싶습니다.
그러나 함수 선언이 미리 사전에 있기 전에 VAR 선언이 사전에 있다고 말해야합니다.
먼저 VAR 진술서의 초기 결론을 제공하십시오.
변수는 스크립트 또는 함수를 선언하는 스크립트 또는 함수에 정의되며 변수 선언문은 스크립트 또는 함수의 상단으로 진행됩니다. 그러나 변수 초기화 조작은 원래 VAR 문에서 여전히 실행되며 명령문이 선언되기 전에 변수의 값이 정의되지 않습니다.
위의 결론에서 세 가지 간단한 점을 요약 할 수 있습니다.
1. 변수 선언은 함수의 상단으로 진행됩니다.
2. 선언이 발전되고 초기화가 발전되지 않았으며 초기화는 원래 초기화 위치에서 여전히 초기화됩니다.
3. 변수의 값은 선언 전에 정의되지 않습니다.
예를 들어 봅시다 :
var handleome = 'handsome'; function gromeTougly () {alert (hillerce); var 잘 생긴 = 'Ugly'; Alert (handsome);} handsometougly ();올바른 출력은 다음과 같습니다.
첫 번째 출력은 정의되지 않은 다음 추악한 출력입니다.
오류 출력은 다음과 같습니다.
먼저 잘 생긴 다음 추악한 출력.
이것이 바로 변수 선언이 미리 진행되는 일입니다. 잘 생긴 로컬 변수는 전체 기능 본문에서 정의됩니다. 기능 본문의 잘 생긴 변수가 억제됩니다. 아뇨, 변수 선언이 발전되기 때문에 동일한 이름의 잘 생긴 글로벌 변수를 다룹니다. 즉, var 잘 생긴 기능은 다음과 같습니다.
var hillome = 'handsome'; function gromeTougly () {var handsome; 경고 (잘 생긴); var 잘 생긴 = 'Ugly'; Alert (handsome);} handsometougly ();따라서 경고하기 전에 (잘 생긴), 위에서 언급 한 바와 같이 이미 var 잘 생긴 선언이 있습니다.
변수의 값은 선언 전에 정의되지 않았습니다.
따라서 첫 번째 출력은 정의되지 않았습니다.
위에서 언급 한 내용 때문에 :
단지 선언이 발전되고 초기화가 진행되지 않으며 초기화는 원래 초기화 위치에서 여전히 초기화됩니다.
따라서 두 번째 출력은 추악합니다.
기능 선언 미리
다음 두 가지, 우리는 VAR 선언과 함께 기능 선언 선언에 대해 미리 채팅을 시작할 것입니다.
친구들은 기능 선언 선언에 미리 익숙해야하므로 매우 친숙한 예를 들어보십시오.
saytruth (); <!-함수 선언-> 함수 saytruth () {alert ( 'myvin is hilly.친구들은 모두 함수 선언의 기능 정의 방법, 즉 위의 첫 번째 기능 호출 방법이 정확하고 Myvin이 잘 생겼다는 사실을 알고 있습니다. 함수 호출 문을 함수 선언 후에 배치 할 수 있으므로 출력 될 수 있습니다. 함수 표현식의 함수 정의 방법, 즉 위의 두 번째 함수 호출 방법은 Myvin의 올바른 결과를 출력 할 수 없습니다.
위의 Myvin과 결합 된 Myvin은 잘 생겼습니다. 예를 들어, 기능 선언의 결론은 미리 이해하기 쉬운 것 같습니다. 함수 선언의 함수 정의 메소드를 사용할 때 기능 호출을 어디에나 배치 할 수 있습니다. 예, 당신이 맞아요, 친구, 당신을 반박하는 방법을 모르겠습니다. 그런 다음 몇 마디 더 말씀 드리겠습니다.
내 친구가 말한 것에서
함수 선언에 기능 정의 방법을 사용할 때 기능 호출을 어디에나 배치 할 수 있습니까?
약간으로 이어질 수 있습니다.
함수 선언이 발전되면 함수 선언과 기능 본문이 진행됩니다.
그리고:
함수 선언은 실행 전 기간 동안 실행됩니다. 즉, 브라우저가 코드를 실행할 준비가 된 경우 기능 선언이 실행됩니다. 함수 선언은 예상 실행 기간 동안 실행되므로 실행 기간 동안 함수 선언이 더 이상 실행되지 않습니다 (이미 실행 한 사람들이 있으며 자연스럽게 실행되지 않습니다).
위는 요점입니다.
기능 표현이 미리 선언 될 수없는 이유는 무엇입니까?
한 가지 더 이야기합시다 : 왜 기능 선언과 같이 기능 표현이 미리 선언 될 수 없습니까?
다행히도 조금 알고 있습니다. 그렇지 않으면 어떻게 대답 해야하는지 모르겠습니다.
내 이해에 따르면, 당신에게 설명하겠습니다.
우리는 VAR 성명서 위에 미리 말했으며 위에서 언급 한 내용에주의를 기울이십시오.
단지 선언이 발전되고 초기화가 진행되지 않으며 초기화는 원래 초기화 위치에서 여전히 초기화됩니다.
좋아, 여기에 함수 표현식을 넣어 봅시다.
var variable = function (arg1, arg2, ...) {<!-기능 바디->}함수 표현식은 기능 정의를 표현식으로 작성하는 방법입니다 (시간 낭비 인 것 같습니다. 그러나 이것은 기능 객체를 변수에 할당하는 것이 기능 표현을 미리 선언 할 수 없다는 것을 해석하고 이해하는 데 효과적이므로 다음과 같은 기능 표현을 작성합니다.
var variable = 5 이것을보고, 친구는 하나가 변수에 값을 할당하고 다른 하나는 함수 객체를 변수에 할당하는 것임을 이해할 것입니다. 따라서 함수 표현의 경우 가변 할당이 발전되지 않습니다.
기능 선언의 초기 인스턴스 분석
같은 문장, 현실은 예에서 나온 것입니다.
saytruth (); if (1) {function saytruth () {alert ( 'myvin is handle')};} else {function saytruth () {alert ( 'myvin is cugly')};}브라우저에 오류가 발생하지 않을 때 (해당 브라우저가 오류를 던 졌는지 여부를 스스로 테스트하십시오. 왜 테스트하지 않습니까? 게으른 말을 할 수 있습니까?) 브라우저의 출력 결과는 Myvin이 못 생겼습니다 (진실은 그것을 인정하고 싶지 않지만 Ahhhh, 내가 더 많이 읽어야합니까?
왜? 물론, 성명서는 발전되었습니다. 함수 선언이 발전되므로 코드가 실행되기 전에 함수 선언이 구문 분석됩니다. 실행 순서는 다음과 같습니다. 첫 번째 구문 분석 내 함수 saytruth () {alert ( 'myvin is hilly')}, parsing 함수가 saytruth () {alert ( 'myvin is ugly')}}, 이전 함수 선언을 지배합니다. 우리가 saytruth () 함수를 호출 할 때, 즉 코드 실행 중에 선언이 무시 될 것이므로, Myvin은 못 생겼습니다. 잊어 버리면 위에서 말한 내용을 볼 수 있습니다.
함수 선언은 실행 전 기간 동안 실행됩니다. 즉, 브라우저가 코드를 실행할 준비가 된 경우 기능 선언이 실행됩니다. 함수 선언은 예상 실행 기간 동안 실행되므로 실행 기간 동안 함수 선언이 더 이상 실행되지 않습니다 (이미 실행 한 사람들이 있으며 자연스럽게 실행되지 않습니다).
긴밀한 전화
여기에서 미리 선언 된 기능에 대해 이야기합시다. 내 이해와 넌센스가 도움이 필요한 사람들에게 도움이되기를 바랍니다.
물론 실습은 진정한 지식을 생성합니다. 사물의 이해, 인식 및 적용은 여전히 더 많은 독서, 사용 및 요약에 있습니다. 나는 진술과 관행에 대해 이야기하는 유명한 말을 기억합니다.
기능 선언 및 기능 표현에 대한 위의 간단한 분석 - 기능 선언문은 내가 당신과 미리 공유 한 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.