順番が変わると実行されない理由がわかりません

動作がうまく理解できなかったらconsole.logを使って確認してみましょう。
2020年5月4日
ユーザー

下記の箇所について疑問があります。

    if (e.key === word[loc]) {
      loc++;
      if (loc === word.length) {
        word = words[Math.floor(Math.random() * words.length)];
        loc = 0;
      }
      updateTarget();

この記述のところで、

   if (loc === word.length) {
        word = words[Math.floor(Math.random() * words.length)];
        loc = 0;
      }

と、

    updateTarget();

の順序が逆になると、新しいwordに変更されなくなってしまいます。
つまり、

    if (e.key === word[loc]) {
      loc++;
      updateTarget();
      if (loc === word.length) {
        word = words[Math.floor(Math.random() * words.length)];
        loc = 0;
      }

こういった状態です。

updateTarget();内で、locの値が変わっているわけではないと思いますし、問題ないのかと思ったのですが・・・。

なぜ、このようなことが起こってしまうのでしょうか?
よろしくお願いします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(1)