私には2つの機能があります:
function g(data, i){}
function f(data, i){}
私はそれらを次のように呼びたい:
var myVar = f(g(data, i));
だからg()
返す必要があり(data, i)
ます。
もちろん、うまくいきません。これを行う方法はありますか?
私には2つの機能があります:
function g(data, i){}
function f(data, i){}
私はそれらを次のように呼びたい:
var myVar = f(g(data, i));
だからg()
返す必要があり(data, i)
ます。
もちろん、うまくいきません。これを行う方法はありますか?
apply
関数を使用して値の配列を返すようにする場合があります。
function g(a, b) { return [a, b]; }
function f(c, d) { return [c, d]; }
console.log(f.apply(null, g("thing", "cow")));
ただし、これをこの目的で使用する場合は、プログラマーが悪いことを示す大きな兆候であるため、これを行う必要はありません。2 つの引数を取る関数がある場合は、2 つの引数を渡します。
function g(a, b) { return [a, b]; }
function f(c, d) { return [c, d]; }
var result = g("thing", "cow");
f(result[0], result[1]);
値のペアを取得して生成するか、Der Flatulator が示すオブジェクト パターン (配列ではなく) を使用することが既にわかっているためです。
任意の数の引数の長さで機能します
function g(){
return [].slice.call(arguments);
}
function f(data, i){
}
f.apply(undefined, g(data, i));
あなたが持っているのとまったく同じではありませんが、引数は「配列のような」ものなので、だますことができます...見よ:D
var g = function(a,b) {return [a,b]};
var f = function(a, b) {console.log("f evaluating", a, b)};
f.apply(null,g(1,2));
あなたにあげる:
bar 1 2
別の方法として、渡された引数が 1 つしかない場合、(f) 関数で何かハッキーなことをして、最初の引数の値を分割することもできますが、私は適用の方が好きです。たとえば、引数が配列の場合、これは恐ろしいことです。それ自体で。