2

ここに簡単なスクリプトがあります:

function parentFunc() {
    var x = 15;
    process(x);
}

parentFunc();

function process(x) {
    alert(x);
}​

ページが読み込まれると、パラメーターを送信するとともに関数parentFunc()を呼び出すが実行されます。が呼び出されたときに、実行せずにパラメーターを関数に送信process()するようにする方法はありますか? グローバル変数を使用しないソリューションが必要です。parentFunc()process()

4

2 に答える 2

3

私があなたの問題を正しく理解していれば、特定の引数を にバインドしてprocess後で関数を実行したいですか?

.bind() [MDN]でこれを行うことができます。コンテキストと引数を受け取り、新しい関数を作成します。

var process_bound = process.bind(null, x);
// later
process_bound();

をサポートしていないブラウザーの実装については.bind()、MDN のドキュメントを参照してください (または Rocket のコメントを参照してください)。


使用方法は次のとおりです。

function process(x) {
    alert(x);
}​

function parentFunc() {
    var x = 15;
    return process.bind(null, x);
}

var process_bound = parentFunc();

// now bind the event handler to the element

var element = document.getElementById('someId');
element.onclick = function() {
    process_bound();
    return false;
};
于 2012-05-16T15:22:07.193 に答える
0

クロージャを使用してください - x に異なる値を渡し、parentscript を呼び出すたびに異なる参照フレームを作成できます。

function parentscript(x) {
process = function(){
    alert(x)
}
return process
}
f = parentscript(23);
f(); //alerts 23
于 2012-05-16T16:35:45.730 に答える