>웹 프론트엔드 >JS 튜토리얼 >js 기능에 필요한 지식

js 기능에 필요한 지식

小云云
小云云원래의
2018-02-28 14:31:131084검색

js에서 참조 유형은 Object, data, Array, re请输入代码gExp 및 Function이라는 5가지 참조 유형을 포함하는 데이터 구조라는 것을 알아야 합니다. 오늘은 Function의 데이터 구조에 대해 이야기해보겠습니다. js에서 함수는 실제로 객체이며 각 함수는 Function 유형의 인스턴스입니다. 다른 참조 유형과 마찬가지로 속성과 메서드가 있습니다.

1. 함수를 정의하는 방법에는 여러 가지가 있습니다

  1. 함수 선언 구문 정의

        function sum(num1,num2){
       return num1+num2;
      }
  2. 함수 표현식
    함수 표현식 뒤에 세미콜론이 있다는 점에 유의하세요.

   var sum=function(num1,num2){
      return num1+num2;
}
  1. 함수 생성자를 사용하세요

    使用构造函数可以接收任意数量的参数,但最后一个参数始终被看成是函数体,而前面的参数则枚举出了参数
var sum=new Function("num1","num2","return num1+num2")

물론 세 번째 방법은 친절하지도 않고 추천하지도 않습니다.

함수 이름은 단지 함수에 대한 포인터이므로 함수 이름은 객체 포인터를 포함하는 다른 변수와 다르지 않습니다. 즉, 함수에는 여러 이름이 있을 수 있습니다.

여기서 함수 선언과 함수 표현식의 차이점은 무엇인가요?
파서가 실행 환경에 데이터를 로드할 때 함수 선언과 함수 표현식을 다르게 처리합니다. 파서는 먼저 함수 선언을 읽고 코드보다 먼저 함수 선언 코드를 호출 가능하게 만듭니다. 이것이 우리가 일반적으로 함수 선언 호이스팅이라고 부르는 것입니다. 함수 표현식은 서로 다릅니다. 함수 구문 분석기가 실제로 실행되기 전에 자신이 위치한 코드 블록을 실행할 때까지 기다려야 합니다. 다음 두 가지 예를 비교해보세요

console.log(sum(10,10));

function sum(n1,n2){
   return n1+n2;
}

以上代码会正常执行

再看!

console.log(sum(10,10));

var sum=function(n1,n2){
   return n1+n2;
}

以上执行器就会报错!

2. 함수는 오버로드되지 않습니다

동일한 이름을 가진 두 함수가 선언되면 후자의 함수가 이전 함수를 덮어쓰게 됩니다.

function sun(a){
  return a+100;
}
function sun(a){
  return a+200;
}

var result=sum(2)//202

3. 함수의 내부 속성

  • 이 포함되어 있습니다. 인수

    자세한 내용은 다시 설명하지 않습니다

4 함수의 속성과 메서드는 2가지입니다. , 길이 및 프로토타입

  • length는 함수가 수신하기를 원하는 명명된 매개변수의 수를 나타냅니다.

    function a(name){
     //todo
    }
    function b(name,age){
     //todo
    }
    function c(){
     //todo
    }
    
    a.length //1
    b.length //2
    c.length //0
  • prototype 속성은 참조 유형에 매우 중요하며 구체적으로 설명할 것이므로 여기서는 자세히 다루지 않겠습니다.

각 함수에는 상속되지 않은 2개의 메서드 apply 및 call이 포함되어 있습니다.

  • 이 두 메서드의 목적은 특정 범위에서 함수를 호출하는 것입니다. 실제로 이것이 참조하는 값을 기능 본체.

  • 우선. apply() 메서드는 두 개의 매개변수를 받습니다. 하나는 함수가 실행되는 범위이고 다른 하나는 매개변수 배열입니다. 두 번째 매개변수는 배열 또는 인수의 인스턴스일 수 있습니다.
function sum(num1,num2){
   return num1+num2;
}

function test1(a,b){
    return sum.apply(this,arguments);
}

function test2(c,d){
    return sum.apply(this.[c,d]);
}

console.log(test1(1,1)) //2

console.log(test2(1,1)) //2

두 매개변수 사이에는 큰 차이가 없습니다. 호출 메소드와 적용 메소드. 차이점은 호출 메소드의 두 번째 매개변수를 하나씩 전달해야 한다는 점입니다.

호출 및 적용을 사용하여 범위를 확장하는 가장 큰 장점은 개체가 어떤 메서드에도 결합되지 않는다는 것입니다.

관련 권장사항:

JS 함수 예제에 대한 자세한 설명

js 함수 값으로 매개변수 전달

js 함수 호출 및 암시적 매개변수 인수 및 this와 관련된 문제

위 내용은 js 기능에 필요한 지식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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