2017-01-28 7 views
0

コールバックconsole.logsの結果がresult = array [0]または1で、配列[1]または2でないのはなぜですか?コールバックおよび変数のインクリメント

function test(array, callback) { 
     var startingIndex = 0; 

     var result = array[startingIndex]; 

     startingIndex++; 

     callback(result); 

    } 

     test([1, 2, 3], function(result) { 
      console.log(result); 
    }); 
+0

を。あなたが 'callback(result)'コールが今どこにあるか 'console.log(result)'を実行すると、同じ結果が表示されます。デバッグの技術の一部は、いくつかを単純化し単純化し、問題に無関係なものに気を散らさないようにすることです。また、ブラウザでJavaScriptデバッガを使用する方法も知っていますか?デバッガでコードを1行ずつ進めると、何が起きているのかがすぐにわかります。ここに[Chrome DevTools](https://developer.chrome.com/devtools)の紹介があります。 –

+0

私は関数内でコールバックとconsole.log(結果)を使わないでChromeデバッガを使い、startingIndex ++に到達するとstartingIndexは0から1に更新されますが、結果には影響しません。 console.logの前に結果が更新されない理由は混乱しています。私は何が欠けているか分からない。 – norkuy

+0

JavaScriptは、コードステートメントを記述した順序でステートメントで実行します。 'result'と' startingIndex'は2つの異なる変数です。一方を変更しても他方には影響しません。 –

答えて

2

あなたがresult変数を割り当てる前startingIndex変数が増加しているためです。

var result = array[startingIndex]; 
startingIndex++; 

スワップこれらの2行を、あなたが意図した結果を取得します:

あなたが持っているあなたは、コールバックの余分な合併症を自分で混乱している

startingIndex++; 
var result = array[startingIndex]; 
関連する問題