>웹 프론트엔드 >JS 튜토리얼 >javascript_javascript 스킬의 함수 유형에 대한 자세한 설명

javascript_javascript 스킬의 함수 유형에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 16:02:001354검색

기능 종류

함수 유형은 의심할 여지없이 js에서 매우 중요한 것입니다.

1. 이것은 우선 객체입니다. 즉, 참조 유형이라는 뜻입니다. 설명: 객체라는 말을 들으면 기본 클래스가 객체인 것 같은 착각이 듭니다.

그것과 대상은 서로 독립적인 것입니다. 함수를 입력하면 반환되는 것은 객체가 아닌 함수입니다

 2. 각 함수는 다른 참조 객체와 동일한 속성과 메서드를 갖는 Function 객체의 인스턴스입니다. 객체이므로 함수 이름은 함수 객체에 대한 포인터입니다

함수 선언에 대한 구문 지원:

<script>

  //方式1
  function fun(num1,num2){
    return num1+num2;
  }
  
  //方式2
  var fun=function(num1,num2){
    return num1+num2;
  };

  //方式3
  var fun=new Function("n1","n2","return n1+n2");
  
</script>

설명: 함수를 선언하는 방법에는 세 가지가 있지만 서로 다릅니다.

방법 1은 함수의 선언으로 이해되고, 방법 2와 3은 함수 표현으로 이해됩니다. (방법 3은 코드가 두 번 구문 분석되기 때문에 권장되지 않습니다. 먼저 일반 ECMAScript 코드를 해석한 다음 들어오는 매개 변수를 해석합니다. 이

작성하면, 매개변수는 N개까지 가능하나, 마지막 매개변수를 함수본체로 간주함)

다른 이유는 js 파서가 함수 선언과 함수 표현식을 다르게 구문 분석하기 때문입니다. 파서는 함수 선언을 먼저 읽고, js 엔진은 실행 중에 함수 선언을 실행 환경의 최상위에 자동으로 배치합니다.

함수 표현식은 함수 표현식이 실행될 때 실제로 해석되어 실행됩니다. 이것을 이해하는 것이 중요합니다!

코드 보기

<script>
  console.log(typeof fun); //"function"
  console.log(typeof fun2); //"undefined"
  console.log(typeof fun3); //"undefined"
  function fun(n1,n2){
   return n1+n2;
  }
  var fun2=function(n1,n2){
   return n1+n2;
  }
  var fun3=new Function("n1","n2","return n1+n2;");
 </script>

 3. 왜 기능이 오버로드되지 않나요?

이 문제는 js의 언어 특성에서 고려해야 합니다. Article 2에서 언급했듯이 함수 이름은 함수 개체에 대한 포인터일 뿐입니다. 포인터의 개념을 바탕으로 이해하면 명확해질 것이다.

코드 예제 보기:

<script>
  function fun(n1){
   return n1+100;
  }
  function fun(n1){
   return n1+200;
  }
  console.log(fun(1));// 201 
  
  //以上写法在解析后应为
  
  var fun=function(n1){
    return n1+100;
  }
  fun=function(n1){
   return n1+200;
  }
  
  // fun 的引用被覆盖了
  console.log(fun(1));// 201 
 </script>

오늘은 여기까지입니다. 이 부분에 사각지대가 있으신 분들에게 도움이 되었으면 좋겠습니다! 수정이 필요한 부분이 있으면 댓글로 남겨주시면 수정해주시길 바라겠습니다.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.