ジャバスクリプト — 予想外の値


アマゾンで私の本をチェックしてくださいhttps://www.amazon.com/John-Au-Yeung/e/B08FT5NT62
今すぐ私の電子メールリストを購読http://jauyeung.net/subscribe/
他のプログラミング言語と同様に、JavaScriptはプログラムを読みやすく維持するためにベストプラクティスの独自のリストを持っています.JavaScriptにトリッキーな部分がたくさんあり、避けるべきことがたくさんあります.我々はJavaScriptコードを読みやすくするためにいくつかのベストプラクティスに従うことができます.
この記事では、オブジェクトと関数のパラメータを比較し、ステートメントと関数のパラメータを切り替えるためのデフォルト値を追加し、eval 関数.

オブジェクトの比較


JavaScriptでは、等値比較のために2演算子があります.一つは== 演算子と他の=== 演算子.== オペランドを比較して自動的に同じ型に変換します.=== 両方のオペランドの内容と型を比較することによって比較します.
私たちは=== タイプと内容の両方を比較するので、型の不一致は得られません.
例えば、もし我々が== 演算子は、次の式を評価することができますtrue
0 == "";  
0 == null;  
0 == undefined;  
null == undefined;  
1 == "1";
最初の4行では、すべては、彼らはすべてに変換されているので、falsyですfalse を比較する前に== 演算子.
最後の行では'1' に変換1 比較する前に値を得るtrue 返される.
これらの紛らわしい結果を避けるために=== 演算子.値の型と内容を比較します.With === , 上記のすべてはfalse ○○.
私たちが同じ内容と異なったタイプでものを比較したいならば=== 演算子は、最初に同じ型に変換できます.
例えば、比較したいなら1 and '1' え、書くことができます.
+1 === +'1'
その後、両方の両方に変換されます1 そして、式はtrue .
このように、予期しないタイプを比較することで何も得ることはありません.

デフォルトパラメータ


JavaScript関数は、任意の数のパラメータを取ることができます.これは、我々が期待するより少ないパラメータで通過することができることを意味します.
ES 6では、デフォルトのパラメータ値の機能を取得します.これは関数パラメータのデフォルト値を設定します.
例えば、以下のように書くことができます.
const add = (a, b = 0) => a + b;
関数の2番目の引数で数値を返す必要はありません.書くなら
console.log(add(1));
の値から1を得るb 何も渡されない場合は0に設定されますので、1 + 0となります.
写真でKristina PaparoUnsplash

switch文のデフォルト値を追加する


我々は常にAを加えるべきですdefault ブロックswitch 文は、予期しない値がswitch 文.
例えば、以下のように書きます.
const getDayName = (dayOfWeek) => {  
  let day;  
  switch (dayOfWeek) {  
    case 0:  
      day = "Sunday";  
      break;  
    case 1:  
      day = "Monday";  
      break;  
    case 2:  
      day = "Tuesday";  
      break;  
    case 3:  
      day = "Wednesday";  
      break;  
    case 4:  
      day = "Thursday";  
      break;  
    case 5:  
      day = "Friday";  
      break;  
    case 6:  
      day = "Saturday";  
      break;  
    default:  
      day = "Unknown";  
  }  
  return day;  
}
私たちは何かを渡すことができるので、週の日を取得するgetDayName 関数.例えば、以下のように書くことができます.
console.log(getDayName(0));  
console.log(getDayName(1));  
console.log(getDayName(1000));
1000年を過ぎると、デフォルト値が必要です.

しないでください


The eval 関数は、JavaScriptコードを含む文字列を受け取ります.
私たちはそれを使用するべきではありません.なぜなら、それは未知のソースからのコードを実行できます.
また、それはフライで解釈されるので、それはまた、通常のコードよりも遅いです.これはJavaScriptエンジンがコードを最適化できないためです.
現代のインタプリタはコードをマシンコードに変換しますeval ○○.これは、インタプリタが正しい変数にものをセットするためにオンザフライで変数ルックアップをする必要があることを意味します.
変数に対して実行された操作は、コードをeval 関数.

結論


オブジェクトを平等と比較するとき、我々は=== 演算子は、オブジェクトの内容と型を比較します.また、呼び出されたときに関数に渡されない場合には、パラメータのデフォルト値を設定する必要があります.また、私たちはdefault ブロックswitch ステートメント予期しない値を処理します.最後に、使用しないでくださいeval 関数は、人々が悪意のあるコードを我々のプログラムに注入するのを許す大きなセキュリティであるので、コードを実行するのが遅いですeval ○○.