2017-03-21 11 views
0

は、私が持っているものです。変数の関数の引数としてのJavaScript関数?ここ

function verificarNumero(test, num) { 
    return (test(num)); 
}; 

var resultadoTesteMultiplos = verificarNumero(function (num){return (num % 10 == 0);}, num1); 

この機能は数が、私はそれを行うためのシンプルな方法があります知っているが、私は本当にこの作品を作りたい10 の倍数であるかどうかを調べることになっています。

私はconsole.log(resultadoTesteMultiplos(10));のようなことをしたいが、コンソールは "resultadoTesteMultiplosは関数ではない"を返し、 "num1は未定義です。"

私は間違っていますか?

+3

あなたは 'num1'をどこで定義しますか? – Ionut

+0

私は引数として渡しているので、定義する必要はありません...そうですか? –

+2

必要なのは、関数を返す関数です。 –

答えて

4

あなたはカレーためのもののように思えるが、半分しか道を得た:

function verificarNumero(test) { 
    return function(num) { 
    return test(num); 
    }; 
} 

var resultadoTesteMultiplos = verificarNumero(function(num) { 
    return (num % 10 == 0); 
}); 

console.log(resultadoTesteMultiplos(10)); 
2

num1変数を定義した場合、コードは正しく動作し、resultadoTesteMultiplosのタイプはbooleanです。以下の作業スニペットをしてください参照してください。

var num1 = 10; 
 
function verificarNumero(test, num) { 
 
    return (test(num)); 
 
}; 
 

 
var resultadoTesteMultiplos = verificarNumero(function(num) { 
 
    return (num % 10 == 0); 
 
}, num1); 
 
console.log(typeof resultadoTesteMultiplos); 
 
console.log(resultadoTesteMultiplos);

+0

はい、私はそれを試しました、私が望んでいたのは、num1に値を渡すことでした。そのように設定する必要はありません。 –

+0

@ IgorSílva、OK、私は理解しています。上記の答えはあまりにもうまくいくはずですが、私は私の答えと受け入れられた答えの違いを見ています。 – Ionut

0

戻りverificarNumeroから機能、ないの結果関数。

function verificarNumero (cb) { 
    return function (num) { 
     return cb.apply(this, [num]); 
    }  
}; 

resultadoTesteMultiplos = verificarNumero(function (num) { 
    return (num % 10 == 0); 
}; 

console.log(resultadoTesteMultiplos(10)); 
関連する問題