4

JavaScriptについて簡単な質問があります。

次のコード行に例を示しますが、正常に機能します。渡されたデータにアクセスできますが、問題はありません。

$.getJSON(jsonUrl,function(passeddata){
  alert("it worked ");
});

次のコードサンプルは機能せず、次のエラーで失敗します。

Uncaught TypeError:Object ReferenceError:passeddata is not defined has no method'replace' jq.html:177(無名関数)

$.getJSON(jsonUrl, something(passeddata));

function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");                
}

誰かが問題を説明できますか?おそらく明らかなことは知っていますが、答えを見つけることができません。

4

5 に答える 5

6

getJSON最初のケースでは、JSON の HTTP リクエストが戻ってきたときに実行される関数を渡しています。

2 番目の例では、関数をすぐに呼び出して、その戻り値を に渡していますgetJSON

それを自分で呼び出さないでください()$.getJSON(jsonUrl, something);

于 2012-11-26T21:43:29.997 に答える
4

2 番目のインスタンスを変更して、コールバックを getJSON メソッドに渡すだけにしてみてください。passeddata はまだ存在しないため、関数名を指定するだけです。

$.getJSON(jsonUrl, something);

function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");                
}
于 2012-11-26T21:43:31.390 に答える
3
$.getJSON(jsonUrl, something);

function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");                
}

これが本来あるべき姿です。2番目のパラメーターを使用すると、実行する必要がある関数へのポインターを伝えるだけです。あなたのコード関数ではすぐに実行されます

于 2012-11-26T21:43:45.330 に答える
2

「something(passedata)」の RESULT を 2 番目のパラメーターとして getJSON 関数呼び出しに渡しています。

于 2012-11-26T21:44:04.400 に答える
1

something(passeddata)関数を呼び出し、その戻り値をコールバックとして使用するので、入れたくありません。あなたが望むのはこれだけです:

$.getJSON(jsonUrl, something);

引数として使用する場合、パラメーター名は問題にならないことに注意してください。そのためpasseddata、関数自体で引き続き使用できます。

于 2012-11-26T21:44:11.060 に答える