함수 및 선언 선행자

2842 단어

함수 성명과 함수 표현식의 차이

  • 문법이 다르다: 함수 성명은 지정된 매개 변수를 가진 함수를 정의하고 문법은 다음과 같다.
  • function name([param,[, param,[..., param]]]) {
       [statements]
    }
    

    function 키워드는 다음 구문을 사용하여 표현식에서 함수를 정의할 수 있습니다.
    let function_expression = function [name]([param1[, param2[, ..., paramN]]]) {
       statements
    };
    
  • 자바스크립트의 함수 성명이 함수 정의로 향상되었습니다. 함수 성명 전에 이 함수를 사용할 수 있습니다.자바스크립트의 함수 표현식이 향상되지 않았습니다. 함수 설명과 달리 함수 표현식을 정의하기 전에 함수 표현식을 사용할 수 없습니다
  • 함수 표현식과 함수 성명의 가장 큰 차이점은 함수 명칭(functionname)이다. 함수 표현식에서 이를 무시하고 익명 함수(anonymous functions)를 만들 수 있지만 함수 성명은 안 된다
  • 약간의 보충 - 익명 함수


    익명 함수는 쓰기가 간편하고 빠르지만 몇 가지 단점을 고려해야 한다.
  • 익명 함수는 창고 추적에서 의미 있는 함수 이름을 표시하지 않아 디버깅이 어렵다
  • 함수 이름이 없으면 함수가 자신을 인용해야 할 때 기한이 지난 인용만 사용할 수 있습니다. 예를 들어 귀속 중입니다.또 다른 함수는 자신의 예를 인용해야 한다. 사건이 발생한 후 사건 감청기가 자신을 묶어야 한다는 것이다
  • 코드 가독성/이해성 변차
  • 변수의 성명 전치와 함수의 성명 전치

  • 변수의 성명 전치는 js해상기가 코드를 해석할 때 변수의 성명을 현재 작용역의 맨 앞부분으로 향상시키지만 변수의 값은 원래의 순서에 따라 집행하는 것을 말한다.
  • console.log(a);
    var a = 1;
    

    변수 승급이 존재하기 때문에 실제로 실행되는 코드는 다음과 같다.
    var a;
    console.log(a);
    a = 1; //  undefined,  a 
    

    참고:
    1) 변수 승급은 var 명령 성명의 변수에만 유효하며, 변수가 var 명령으로 성명되지 않으면 변수 승급이 발생하지 않습니다.2) 향상은 변수 성명에 영향을 주고 그 값의 초기화에 영향을 주지 않는다 3) 변수의 성명 전치와 함수의 성명 전치, 변수는 앞, 함수는 뒤에 있다
  • 함수의 성명 전치는 두 가지가 있다. 하나는 함수 성명이고 전체 성명은 현재 작용역의 맨 앞에 배치된다. 따라서 현재 작용역에서 먼저 호출한 다음에 함수를 성명하는 것은 틀리지 않는다. 하나는 함수 표현식이다. var의 함수 표현식과 var의 변량은 별 차이가 없기 때문에 성명 전치의 규칙은 변수 성명 전치와 같다
  • arguments


    arguments는 함수에 전달되는 매개 변수에 대응하는 클래스 그룹입니다.함수 내부에서,arguments 대상을 사용하여 이 함수에 전송된 모든 매개 변수를 얻을 수 있습니다.arguments 대상은 모든 (비화살표) 함수에서 사용할 수 있는 국부 변수입니다.arguments 대상을 사용하여 함수에서 함수를 인용할 수 있는 매개 변수입니다.이 대상은 함수에 전달되는 매개 변수의 항목을 포함하고 첫 번째 항목의 인덱스는 0부터 시작합니다.

    함수의 "재부팅"


    다시 불러오는 것은 같은 이름과 다른 매개 변수 목록을 가진 함수 그룹입니다.JavaScript에서는 재부팅되지 않고 같은 이름의 함수가 덮어씁니다.그러나 함수 바늘에서 서로 다른 매개 변수를 호출하여 해당하는 논리를 실행할 수 있다.
    function calculate() {
        if (arguments.length == 2) {
            return arguments[0] + arguments[1];
        } 
        if (arguments.length == 3) {
            return arguments[0] * arguments[1] * arguments[2];
        } 
    }
    
    calculate(1, 3)
    

    위의 예를 제외하고는 다음과 같은 방법을 사용할 수 있다.https://www.cnblogs.com/yugege/p/5539020.html

    함수 표현식 즉시 실행


    함수 표현식이 무엇입니까?


    '즉시 호출되는 함수 표현식'(Immediately-Invoked Function Expression)은 IIFE라고 약칭하는데, 일반적으로 다음과 같은 두 가지 방법이 있다. (function(){ /* code */ }()); 또는 (function(){ /* code */ })(); 위의 두 가지 작법의 마지막 분호는 모두 필수적이다.

    함수 표현식 작용 즉시 실행

  • 함수에 이름을 붙일 필요가 없고 전역 변수 오염을 피한다
  • IIFE 내부에 단독 작용역이 형성되어 외부에서 읽을 수 없는 개인 변수를 봉인할 수 있다.

  • 참조:
  • JavaScript 함수 재부팅
  • JavaScript의 즉시 실행 함수
  • JavaScript 표준 참조 자습서
  • 좋은 웹페이지 즐겨찾기