私は任意の数の引数を取ることができます機能を定義したが、何もする必要はありません。パス変数の引数 - javascriptの
function MyFunction() { //can take 0, 1, 1000, 10000, n arguments
//function code
}
今私は、可変個の引数でのMyFunctionを呼び出す別の関数を記述したいと思います各時間:関数の引数の配列を渡すために使用することができる
私は任意の数の引数を取ることができます機能を定義したが、何もする必要はありません。パス変数の引数 - javascriptの
function MyFunction() { //can take 0, 1, 1000, 10000, n arguments
//function code
}
今私は、可変個の引数でのMyFunctionを呼び出す別の関数を記述したいと思います各時間:関数の引数の配列を渡すために使用することができる
Function.apply
予め:)で
function Caller(n) {
var simple_var = "abc";
MyFunction() //how can i pass simple_var to MyFunction n times?
}
おかげかのように各要素
function Caller(n) {
var simple_var = "abc";
// create an array with "n" copies of the var
var args = [];
for (var i = 0; i < n; ++i) {
args.push(simple_var);
}
// use Function.apply to send that array to "MyFunction"
MyFunction.apply(this, args);
}
フォートワース言うために、WebKitの上argument length is limited to 65536:配列は、個々の引数として渡されていました。
1. args.push()の代わりにargs [args.length]を使用します。2.ソリューションは、n個の異なるパラメータではなく、配列としてパラメータを送信します。 – Amberlamps
@Amberlamps - このような状況には 'apply'が使われます。それは 'n'引数を提出する –
@ジビアブラハム:あなたは正しい!私の間違い! – Amberlamps
あなたはevalを使うことができます(私はeval is evilです)。ループ構造の文字列のために
:
var myCall = "Myfunction(abc, abc, abc)";
、その後、あなたがいる限り、彼らは何のコンストラクタではないとして、大文字、あなたの関数に名前を付けるべきではありません
function Caller(n) {
var simple_var = "abc";
eval(myCall);
}
決して、今までに、 'eval'を使用してください。 – Alnitak
をevalにそれを渡します。 – Bergi
チップをありがとう! – Stefano