>  기사  >  웹 프론트엔드  >  JS에서 함수를 만드는 세 가지 방법과 차이점

JS에서 함수를 만드는 세 가지 방법과 차이점

PHPz
PHPz원래의
2016-05-16 15:10:451451검색

1. 함수 선언

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

2. 함수 리터럴이라고도 하는 함수 표현식

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

둘 다 차이점은 다음과 같습니다. 파서는 먼저 함수 선언을 읽고 코드를 실행하기 전에 액세스 가능하게 만드는 반면, 함수 표현식은 파서가 실제로 해석되고 실행되기 전에 해당 코드 줄에 도달할 때까지 기다려야 합니다.

엄밀히 말하면 자체 실행 함수를 함수 표현식이라고도 합니다. 주로 새 범위를 만드는 데 사용됩니다. 이 범위에 선언된 변수는 대부분 다른 범위의 변수와 충돌하거나 혼동되지 않습니다. 그 중 익명의 함수로 존재하며 즉시 자동으로 실행됩니다.

(function(n1,n2){
    console.log (n1+n2)
})(1,3);//4

기타 여러 자체 실행 함수:

  //可用来传参
  (function(x,y){
    console.log(x+y);
  })(2,3);

  //带返回值
  var sum=(function(x,y){
    return x+y;
  })(2,3);
  console.log(sum);

  ~function(){
    var name='~'
    console.log(name);
  }();

  !function(){
    var name='!'
    console.log(name);
  }();

  ;(function(){
    var name=';'
    console.log(name);
  })();

  -function(){
    var name='-'
    console.log(name);
  }();

  //逗号运算符
  1,function(){
    var name=',';
    console.log(name);
  }();

  //异或
  1^function(){
    var name='^';
    console.log(name);
  }();

  //比较运算符
  1>function(){
    var name='>';
    console.log(name);
  }();

  ~+-!(function(){
    var name='~+-!';
    console.log(name);
  })();

  ~!(function(){
    var name='~!';
    console.log(name);
  })();

  (function(){
    var name='call';
    console.log(name);
  }).call();

  (function(){
    var name='apply';
    console.log(name);
  }).apply();

3. 함수 구성 방법, 매개변수는 인용되어야 합니다.

var sum3=new Function('n1','n2','return n1+n2');
console.log(sum3(2,3));//5

기술적으로 말하면 함수 표현식입니다. 일반적으로 이러한 방식으로 함수를 정의하는 것은 권장되지 않습니다. 왜냐하면 이 구문을 사용하면 코드가 두 번 구문 분석되기 때문입니다(첫 번째는 일반 ECMAScript 코드를 구문 분석하고 두 번째는 생성자에 전달된 문자열을 구문 분석하는 것입니다). 따라서 성능에 영향을 미칩니다.

var name='haoxl';
  function fun(){
    var name='lili';
    return new Function('return name');//不能获取局部变量
  }
 console.log(fun()());//haoxl

Function() 생성자는 실행될 때마다 함수 본문을 구문 분석하고 새로운 함수 개체를 생성하므로 루프에서 Function을 호출하거나 자주 실행되는 함수() 생성자 효율성이 매우 낮습니다. Function() 생성자를 사용하여 함수를 생성할 때 함수 리터럴은 항상 최상위 함수로 실행되지 않습니다.

【관련 추천 튜토리얼】

1. JavaScript 동영상 튜토리얼
2. JavaScript 온라인 매뉴얼
3. 부트스트랩 튜토리얼

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