デバッグノート



等価演算子の代わりに代入演算子のキャッチ利用
  • 特定の条件が満たされた場合、異なるプログラムを行う分岐プログラムif , else if , and else JavaScriptのステートメント.結果は、結果が値と等しいかどうかをテストする形式をとります.
  • この論理は、「xがyに等しいならば、それから」として話されますを使用して、文字通りコードに変換することができます= , または代入演算子.これはプログラムの予期しない制御フローにつながります.
  • 他のポストに示すように、代入演算子= ) JavaScriptで変数名に値を代入します.と== and === 演算子は等価性をチェックする=== 厳密な等価性のテストは、値と型の両方を意味します.
  • JavaScript内のほとんどすべての値はtrueに評価されます.これは“falsy”値として知られているものを除いて、false、0、“(空の文字列)、NaN、undefined、nullを除く.
  • EX :
  • let x = 7;
    let y = 9;
    let result = "to come";
    
    if(x == y) {
      result = "Equal!";
    } else {
      result = "Not equal!";
    }
    
    console.log(result);
    
  • xが厳密にyに等しくないので、ここでは"not not "の結果を得ます

  • 関数呼び出し後にキャッチサムとクローズ括弧をキャッチ
  • 関数やメソッドが引数をとることがない場合は、(空の)開いている括弧を呼び出すときに忘れてしまうかもしれません.関数呼び出しの結果はしばしば、コード内の他の使用のための変数に保存されます.このエラーは、変数の値(またはその型)をコンソールにロギングし、関数リファレンスに設定されていることを確認することによって検出できます.
  • 次の例の変数は異なります.
  • function getNine() {
      let x = 6;
      let y = 3;
      return x + y;
    }
    
    let varOne = getNine;
    let varTwo = getNine();
    console.log(varOne);
    console.log(varTwo);
    
  • ここでVaroneは[関数: getnine ]を表示します.

  • 関数の呼び出し時に引数が間違った順序で渡されます
  • 次のバグは、関数の引数が不正な順序で供給されるときです.引数が配列や整数を期待する関数などの異なる型なら、これはランタイムエラーをスローします.引数が同じ型(例えばすべての整数)であるなら、コードの論理は意味をなさないでしょう.これらの問題を避けるために、適切な順序ですべての必須の引数を供給するようにしてください.
  • EX :
  • let base = 2;
    let exp = 3;
    let power = raiseToPower(exp, base);
    
    function raiseToPower(b, e) {
      return Math.pow(b, e);
    }
    
    console.log(power); console will display 9
    
  • 関数RAiseToPowerは、基底を指数関数にします.残念ながら、それは正しく呼ばれません.電源の値が予想8であるようにコードを修正しましょう.
  • let base = 2;
    let exp = 3;
    let power = raiseToPower(base, exp);
    
    function raiseToPower(b, e) {
      return Math.pow(b, e);
    }
    
    console.log(power); console will display 8
    

    インデキシングを使用する際に1つのエラーでキャッチ
  • つのエラー(時々OBOEと呼ばれる)は、文字列または配列の特定のインデックス(セグメントをスライスしたりアクセスしたりする)を対象としている場合、またはインデックスをループするときにトリミングします.
  • JavaScriptのインデクシングはゼロで始まり、一つではなく、最後のインデックスは常に1つの項目の長さよりも小さいことを意味します.長さに等しいインデックスにアクセスしようとすると、プログラムは“索引の範囲外”参照エラーをスローしたり、未定義の印刷を行うことができます.
  • 以下にエラーの例を示します:
  • let alphabet = "abcdefghijklmnopqrstuvwxyz";
    let len = alphabet.length;
    for (let i = 0; i <= len; i++) {
      console.log(alphabet[i]);
    }
    for (let j = 1; j < len; j++) {
      console.log(alphabet[j]);
    }
    for (let k = 0; k < len; k++) {
      console.log(alphabet[k]);
    }
    
  • 最初の例では、ループを1回繰り返してしまい、2番目のループは1回余りループします(最初のインデックスは0です).番目の例は正しいです.
  • もう一つのEX
  • function countToFive() {
      let firstFive = "12345";
      let len = firstFive.length;
      for (let i = 0; i < len; i++) {
        console.log(firstFive[i]);
      }
    }
    
    countToFive(); console will display 
    1
    2
    3 
    4
    5