Javascript 함수: 함수 설명, 함수 표현 식, NFE 라 는 함수 표현 식

4144 단어 JavaScript
참고:
functions-declarations-and-expressions
자바 script 에서
함 수 는 변수 처럼 어디에서 나 정 의 될 수 있 습 니 다.
Javascript 에서 정 의 된 함 수 는 다음 과 같은 세 가지 방식 이 있 습 니 다.
  • 1, 함수 성명
  • 2, 함수 식
  • 3, new Function 의 반환 결과 호출
  • 함수 설명 문법:
    함수 가 설명 할 때, 뒤쪽 은 다른 코드 와 구분 할 필요 가 없습니다.
    
    function Identifier ( FormalParameterListopt ) { FunctionBody }
    
    //     for  、if        ,      。
    for (variable=startvalue;variable<endvalue;variable=variable+increment)
      {
      code to be executed
      }
    
    if (condition)
      {
      code to be executed if condition is true
      }
    else
      {
      code to be executed if condition is not true
      }
    

    함수 성명 의 이름 은 함수 내부 와 함수 가 있 는 parent 내부 에서 볼 수 있 습 니 다!
    함수
    사전 실행 기간 (즉, 브 라 우 저 에서 코드 를 실행 하려 고 할 때, 코드 를 정식으로 실행 하기 전에) 이 분석 되 었 습 니 다.따라서 함수 성명 방식 으로 정 의 된 함 수 는 성명 전에 호출 할 수도 있 고 성명 후에 호출 할 수도 있다.아래 와 같다
    //      
    function sayHi(name) {
      alert("Hi, "+name)
    }
    
    sayHi("John");
    
    //       
    sayHi("John");
    
    function sayHi(name) {
      alert("Hi, "+name)
    }

    함 수 는 코드 의 어느 곳 에서 든 지 설명 할 수 있 습 니 다. 아래 열 을 보십시오.
    sayHi();
    
    if (1) {
      function sayHi() {  alert(1)  }
    } else {
      function sayHi() {  alert(2)  } // <--
    }

    다른 브 라 우 저 에서 상기 코드 를 실행 해 보 세 요. Firefox F14 에서 상기 코드 를 실행 하면 반응 이 없습니다.다른 브 라 우 저 는 2 를 되 돌려 줍 니 다.
    함수 성명 이 실행 되 기 전에 해석 되 었 기 때문이다.
    규범 (p. 10.5) 에 따라 뒤의 같은 이름 을 가 진 함수 성명 은 앞 에 존재 하 는 함수 성명 을 덮어 씁 니 다.
    실행 기간 이 되 었 을 때, 이 성명 코드 들 은 무시 되 었 다.따라서 if 판단 자체 가 영향 을 주지 않 는 다.
    함수 식 문법:
    함수
    1 등 시민 은 숫자, 문자열 과 같다.값 을 놓 을 수 있 는 곳 이 라면 함수 하 나 를 놓 을 수도 있 습 니 다.
    함수 표현 식 은 함수 function (arguments) {...} 을 포함 하 는 모든 표현 식 입 니 다.주의:
    다음 표현 식 에서 설명 한 마지막 따옴표 구분자 입 니 다.
    함수 식 의 function 에 도 자신의 이름 이 있다 면 이 이름 은 함수 내부 에서 만 볼 수 있 습 니 다. NFE (Named function expressions) 라 는 함수 표현 식 을 참고 하 십시오.
    함수 식 문법 예 1:
    var f = function(arguments) {
       ... code ... 
    };

    함수 식 문법 예 2:
    익명 함 수 를 만 들 고 생 성 된 익명 함 수 를 동시에 실행 합 니 다.
    왜 함수 가 괄호 안에 있 습 니까? 자바 script 은 함수 표현 식 만 여기에서 실 행 될 수 있 기 때 문 입 니 다.
    (function() {
    
      var a, b    // local variables 
     
      // ...      // and the code 
    
    })();

    함수 성명, 함수 표현 식
    Javascript
    주 코드 흐름 에서 함 수 를 해석 할 때 함수 설명 입 니 다.그렇지 않 으 면 함수 가 statement 의 일부분 일 때 함수 표현 식 입 니 다.
    자바 script 의 실행 흐름 이 도 착 했 을 때 함수 표현 식 이 생 성 됩 니 다.따라서 함수 표현 식 은 성명 후에 만 사용 할 수 있 습 니 다.
    var sayHi;
    
    // sayHi(); <--        sayHi  ,    ,sayHi    。
    
    if (1) {
      sayHi = function() {  alert(1)  };
    } else {
      sayHi = function() {  alert(2)  };
    }
    
    sayHi();

    권장: 함수 표현 식 이 아 닌 함수 성명 을 사용 하 십시오.함수 표현 식 은 필요 할 때 만 사용 합 니 다: 조건 함수 정의 사용
  • 1. 함수 성명 의 가 독성 이 더욱 좋 고 코드 가 더욱 짧 습 니 다
  • 2. 함수 성명 은 성명 전에 호출 될 수 있 습 니 다
  • 함수 성명 과 함수 표현 식 은 변 수 를 정의 한 다음 함 수 를 넣 습 니 다.다른 것 은 그들의 창설 시간 입 니 다:
    함수 성명 은 선행 실행 기 에 있 고 함수 표현 식 은 실행 기 에 있 습 니 다.
    세 번 째 함수 정의 방식: new Function 을 사용 합 니 다. 다음 과 같 습 니 다. 이런 방식 은 거의 사용 되 지 않 습 니 다.
    var sayHi = new Function('name', ' alert("Hi, "+name) ');
    
    sayHi("Benedict");

    NFE (Named function expressions) 라 는 함수 표현 식: 다음 함수 표현 식 은 자신의 이름 을 포함 합 니 다.
    var f = function sayHi(name) {
      alert("Hi, "+name)
    };

    위의 문법 은 NFE 라 고 불 린 다.이 문법 을 지원 하 는 브 라 우 저 에서
    function 성명 의 이름 은 함수 내부 에서 만 볼 수 있 습 니 다.아래: Firefox 14 에서 say Hi1 의 이름 은 함수 밖에서 호출 되 지 않 습 니 다!IE8 가능 합 니 다!
    var f = function sayHi(name) {
      alert(sayHi);
    };
    f(1);
    sayHi(1);

    NFE 는 일반적으로 재 귀적 으로 호출 되 는 곳 에 사용 된다.

    좋은 웹페이지 즐겨찾기