2014-05-20 5 views
3

함수 범위 개념을 사용하는 JavaScript에서 문제가 발생했습니다. 특히 이것은 다음과 같이 풀어야합니다.자바 스크립트 함수 범위 챌린지

하나의 인수 인 함수 f를 사용하는 callFunc라는 함수를 정의하십시오. f (0), f (0), f (1), f (1)의 값을 포함한 배열을 돌려줍니다. f는 두 번만 호출 할 수 있습니다.

내 코드는 지금까지입니다 : 내가 두 통화 및 자바 스크립트 함수 영역의 원리를 사용하여 네 가지 요소의 배열을 반환하는 방법을 모르는

var f = function(x) { 
    return x+2; 
}; 

var callFunc = function (f) { 
    return [f(0), f(1)]; 
}; 

.

답변

6

정말 아주 간단합니다

function callFunc(f) { 
    var f0, f1; 
    f0 = f(0); 
    f1 = f(1); 
    return [f0,f0,f1,f1]; 
} 

나는 ... 당신이 그 문제가있을 거라고 왜 완전히 확실하지 않다. 함수 호출의 수를 줄이는 것은 어쨌든해야 할 일입니다. 그래서 대부분의 jQuery 코드에 $(this)을 20 번이나 쓰는 것 같은데 ...)

+2

'$ (this)'호출에 관한주의 사항 20 번 : 대부분의 프론트 엔드 코드는 비동기 적으로 실행되고 최소한의 작업 만 수행해야합니다. 코드는 일반적으로 UI 루프의 일부로 실행되지 않고 대신에 산발적으로 호출되기 때문에 이러한 종류의 미세 최적화는 거의 필요하지 않습니다. 최적화 *가 중요한 경우, 함수 호출을 줄이는 것은 확실히 유용한 기술이지만, 때때로 가능한 빨리 코드를 작성하는 것보다 코드를 분명히 작성하는 것이 더 중요합니다. – zzzzBov

+0

@zzzzBov 제 말은'var t = $ (this) .text(); $ (this) .text (t + "123");'(over-simplification). 기본적으로'$ this = $ (this)'를 할 수있을 때'$ (this) '를 반복적으로 호출하고 이후에는'$ this'를 참조하기 만하면됩니다. –

+0

코드가 corect인지 확실하지 않습니다. 다음은 내가 풀려고하는 문제에 대한 링크입니다 : [Function scope] (https://nathansjslessons.appspot.com/lesson?id=1055) – Radu