>  기사  >  웹 프론트엔드  >  js 기능 관련 지식 요약 및 공유

js 기능 관련 지식 요약 및 공유

小云云
小云云원래의
2018-03-01 09:09:461385검색

js에서 참조 유형은 Object, data, Array, re의 5가지 참조 유형을 포함하는 데이터 구조입니다. 코드 gExp, Function을 입력하세요. 오늘은 Function의 데이터 구조에 대해 알아보겠습니다.

js에서 함수는 실제로 객체이며 각 함수는 Function 유형의 인스턴스입니다. 다른 참조 유형과 마찬가지로 속성과 메서드가 있습니다.

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

1) 함수 선언 구문 정의


  function sum(num1,num2){
  return num1+num2;
 }

2) 함수 표현식

함수 표현식 뒤에 세미콜론이 있다는 점에 유의하세요.


var sum=function(num1,num2){
   return num1+num2;
}

함수 생성자를 사용하세요

생성자를 사용하면 여러 개의 매개변수를 받을 수 있지만 마지막 매개변수는 항상 함수 본문으로 간주되고 이전 매개변수는 매개변수를 열거합니다


var sum=new Function("num1","num2","return num1+num2")

물론 세 번째 방법은 우호적이지 않습니다 권장되지 않습니다.

함수 이름은 단지 함수에 대한 포인터이므로 함수 이름은 객체 포인터를 포함하는 다른 변수와 다르지 않습니다. 즉, 함수에는 여러 이름이 있을 수 있습니다.
여기서 함수 선언과 함수 표현식의 차이점은 무엇인가요?

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


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개의 속성이 있습니다. 길이와 프로토타입

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


function a(name){
 //todo
}
function b(name,age){
 //todo
}
function c(){
 //todo
}

a.length //1
b.length //2
c.length //0

prototype 속성은 참조 유형에 매우 중요하며 구체적으로 설명할 것이므로 여기서는 자세히 다루지 않겠습니다.


각 함수에는 상속되지 않은 두 가지 메서드인 apply와 call이 포함되어 있습니다.

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


우선. apply() 메서드는 2개의 매개변수를 받습니다. 하나는 함수가 실행되는 범위이고 다른 하나는 매개변수 배열입니다. 두 번째 매개변수는 배열 또는 인수의 인스턴스일 수 있습니다.

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

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


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

관련 권장 사항:

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

JS 함수 디바운싱 및 조절에 대한 자세한 분석_기본 지식

js 함수 매개변수에 대한 값별 전달 설명

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

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