0

重複の可能性:
JavaScript コールバック関数でのローカル変数の設定

変数で何が起こっているのかわからないため、スクリプトのデバッグに苦労しています。

何が起こったのかを追跡するために「console.log」を実行しようとしましたが、驚いたことに、なぜそれが起こるのかわかりません..

これは状況です:

私はこのJavaScriptコードを持っています:

tmplReplaceContent : function(json, tmpl, target){ 
    var template = tmpl;
    var regex = new RegExp("some regex");
    ...
    if (!regex.test(tmpl)) {
        $.get(msi.vars.api_url + tmpl + '.tmpl', function(tmplOut){
            console.log("regex check passed!");
            template = tmplOut;
            console.log(template);
        });
    } else {
      console.log("failed regex check");
    }

    console.log(template);
...

それは最初console.log(template)に私の望ましい結果を生み出します

しかし、2番目は元の値に戻ります:

例えば

tmpl = somevar; // that returns true on if statement
template = tmpl;

console.log(template) // 1st. will return value of somevar

解決策は何だと思いますか? また、コードが失敗するのはなぜですか?

4

0 に答える 0