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の値が変わっているわけではないと思いますし、問題ないのかと思ったのですが・・・。

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

スタッフ

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

プレミアムプランとは?