caller와 callee

1638 단어
키워드
  • caller: 함수의 인용을 되돌려줍니다. 이 함수는 현재의 함수를 호출합니다
  • callee: 실행 중인 함수 자체의 인용을 되돌려줍니다. 이것은arguments의 속성입니다

  • 다음은 저희가 작은 데모를 해볼게요.
      var a = function() { 
      if(a.caller){
              console.log(a.caller);    
          }else{
              console.log(" "); 
          }    
      } 
      a();  //  
      var b = function() {   
           a();   
      }   
      b();  //  
    

    꼭대기 층에서만 호출할 때,caller에만 값이 있습니다
    callee는 length 속성이 있는데 형삼의 개수를 얻을 수 있기 때문에 형삼과 실삼의 개수가 일치하는지 비교할 수 있다
        // 
        function calleeLengthDemo(arg1, arg2) {
            if (arguments.length == arguments.callee.length) {
                console.log(" !");
                /*return;*/
            } else {
                console.log(" :" + arguments.length);      // :4
                console.log(" : " + arguments.callee.length);    // :2
            }
        }
        calleeLengthDemo(1,2,3,4);
    

    callee의 특성에 따라 익명 함수도 귀속할 수 있다
        // 
        var sum = function(n) {
            if (n == 1) return 1;
            return n + sum(n - 1);
        };
        console.log(sum(100));
    
        //callee 
        var sum1 = function (n) {
            if (n == 1){
                return 1;
            }else{
                return n + arguments.callee(n - 1);
            }
        };
        console.log(sum1(100));
    

    js에 bind 방법이 하나 더 있는데, 위의 효과도 있을 수 있다
    var person = { 
    name: ' ', 
    job: ' ', 
    gender: ' ', 
    show: function() { 
    return  this.name  + this.job + this.gender; 
    } 
    } 
    console.log(person.show()); 
    var reShow = person.show.bind({ 
    name:' ', 
    job: ' ' 
    }); 
    console.log(reShow()); 
    

    좋은 웹페이지 즐겨찾기