2016-07-10 2 views
0
spread(someFunction, [1, true, "Foo", "bar"]) // is the same as... 
someFunction(1, true, "Foo", "bar") 

자체에 다른 기능을 취하는 함수 만들 인수 정의되지 않은,하지만이 때 정의되기 때문에 나는 그것을 정의 할 수 없습니다 함수를 호출하십시오.나는 약간의 오류가이 코드를 작성하지만, 가지고

spread(func,[5,6])

그리고 변수도 사용할 수 없습니다. 나는 이런 종류의 기능 만 할 수있다. (이것은 테스트입니다)

+0

인자를 전달하지 않고'func()'를 호출합니다. – Pointy

답변

2

JS에서 이러한 기능을 구현하는 방법은 2 가지 밖에 없습니다. 하나는 함수 호출을 표현하는 문자열을 생성하고 Function.prototype.apply를 사용하여 그것을 평가하는 코드입니다.

spread(add, [1, 2]); //3 

function add(num1, num2) { return num1 + num2; } 

function spread(fn, args) { 
    return fn.apply(null, args); 
} 
+0

정말 고마워. – Mewtei

0

func에 인수를 전달해야하며 결과를 변수로 유지하려면 반환해야합니다.

function spread(func, args) { 
    return func(args); 
} 
function func(args){ 
    console.log(args[0] + args[1]); 
    //do something more, maybe: 
    return (args[0] + args[1]) 
} 
var result = spread(func,[5,6]) 
+0

감사하지만 테스트 스크립트의 IDE에서이 오류가 발생했습니다. /runner/frameworks/javascript/cw-2.js:256 throw ex; ^ TestError : 예상되는 : 3, 대신에 얻은 : 1,2undundined – Mewtei

관련 문제