2012-12-04 3 views
1

저는 JavaScript에 대해 매우 익숙합니다. 그래서이 답변이 명백하게 드러나거나 잘못된 트리를 짖고있는 경우 사과드립니다!두 가지 다른 방식으로 함수 호출하기 - JavaScript

function primeAddNum(innerHTML) { 
    return function() { 
     addNum(innerHTML); 
     return false; 
    }; 
} 
var func = primeAddNum(innerHTML); 

두 번째 :에서 다음 코드 조각의 차이는 무엇

나는 그것에 싶습니다

var func = function() { 
     return function() { 
      addNum(innerHTML); 
      return false; 
     }; 
}(); 

상단 하나는 방식으로 작동,하지만 바닥이 있지만, 그건 나에게별로 중요하지 않아. 내가 알고 싶은 것은 차이를 볼 수 없기 때문에 각 블록 뒤에있는 논리입니다! 차이가 없다

+0

나는 이것이 문제가 아니라는 것을 알고 있지만 익명의 함수를 반환하는 것은 꽤 상속되는 또 다른 익명의 함수라는 것을 알고 있습니다. – thatidiotguy

답변

2

두 번째 블록에 대한 문제는 당신이 그것을 통과하지 않을 때문에 innerHTML는,이 정의되지 않은 것입니다.

var func = function(innerHTML) { 
    return function() { 
     addNum(innerHTML); 
     return false; 
    }; 
}(innerHTML); 
+0

감사합니다. 지금은 훨씬 더 의미가 있습니다. 내가 이걸 보았을 때 나는이 머리카락을 머리카락으로 뽑아 왔다는 것을 믿을 수 없다. – FunnyOxymoron

+0

또한 Esailija가 말한 것을 고려하십시오. 자체 호출 기능을 가진 두 번째 스타일은 한 용도로만 사용됩니다. 모든 것을 반복하지 않고 새 기능을 만들 수는 없습니다. 따라서'primeAddNum'을 재사용 할 계획이라면 첫 번째 버전을 사용하십시오. – bfavaretto

+0

외부 참조에 의존하지 않고'innerHTML'을 잡아내는 것만으로도'undefined' 인 경우에는'unefined'되지 않습니다. 물론 좋지만 코드에 따라 필요하지는 않습니다. – Esailija

-1

, 당신은 한 번만 func를 만들 수 있습니다 두 번째로 잘 문제

1

없이 모두 사용할 수 있습니다. 그러나 첫 번째로, 당신은 많은을 만들 수 있습니다

var func1 = primeAddNum(innerHTML); 
var func2 = primeAddNum(someOtherInnerHTML); 
관련 문제