2011-09-05 6 views
1

jquery 명령에서 doc-ready 부분에 많은 jquery 명령을 포함하는 js 파일을 작성하고 그 다음에 jquery 명령에서 참조되는 함수 전체를 작성합니다. 여기에 내가 찾을 수있는 가장 가까운 예 here이다 .. 나는 그것이라는 이름의 기능이 좋지 JS의 성능이나 그런 일이 발생할 것이라고 말했다 본 것 같은 느낌js 파일에서 일련의 명명 된 함수를 사용하는 것은 나쁜 습관입니까?

//jquery on ready 
$(function() { 
    //misc jquery commands 
    $('#bzm a').click(function(event) { 
     event.preventDefault(); 
    }); 
    $('.editable').not('video, img, textarea').click(function(event) { 
     event.stopPropagation(); 
     loadEditor($(this)); 
     return false; 
    }); 
}); 

//bunch of named functions referenced by jquery commands 
function loadEditor(node, link){ 
    event.stopPropagation(); 

    var value = node.text(); 

    if (editObj){ 
     commitEditor(editObj); 
    } 

    if (node.not('video, img, textarea')){  
     $('#textEdit') 
      .copyCSS(node) 
      .offset(node.offset()) 
      .css('display', 'block') 
      .val(node.text()); 

     node.css('color', 'transparent'); 
    } 

    if(node.is('a') || node.parent().is('a')){ 

     $('#urlEdit').show(); 
     $('#urlEdit').val(node.attr('href')); 
    } else {$('#urlEdit').hide();} 

    editObj = node; 

    if (link){ 
     $('#urlEdit').select(); 
    }else{ 
     $('#textEdit').select(); 
    } 
} 

간단한 예입니다. 나는 확실히 알고 싶다.

+1

작은 코드 스 니핏을 게시하여 참조하는 내용을 정확하게 볼 수 있습니까? –

답변

5

No. 명명 된 함수를 호출하면 변수 조회 (전역이 아닌 경우 비용이 적게 듭니다)와 함수 호출이 발생합니다. 명명 된 함수를 다른 함수로 전달하는 것은 변수 조회 만하면됩니다.

다음은 정사각형 프리 셸에서 Chrome에서 실행되는 일부 마이크로 벤치 마크입니다. 모든 기준을 소금 한 알씩 가져 가라.

(function() { 
    function f() { } 
    var a = [1, 2, 3, 4, 5, 6]; 
    var t0 = Date.now(); 
    for (var i = 100000; --i >= 0;) { a.map(f); } 
    var t1 = Date.now(); 
    print(t1 - t0); 
})() 

24 

(function() { 
    var a = [1, 2, 3, 4, 5, 6]; 
    var t0 = Date.now(); 
    for (var i = 100000; --i >= 0;) { a.map(function f() {}); } 
    var t1 = Date.now(); 
    print(t1 - t0); 
})() 

29 

명명 된 기능을 전달하면 익명 함수는 루프 항목마다 반복적으로 인스턴스화되기 때문에 아마도 익명 함수를 전달하는 것보다 빠릅니다.

+0

+1 실제로 테스트를하고 있습니다! 실제로, 어느 쪽이든 마이크로 최적화; 더 읽기 쉬운 것은 무엇이든하십시오. – bobince

관련 문제