JavaScriptについて知っておくべきトップ11の事柄

6234 ワード


1 NULL対未定義
未定義undefined 変数の値は定義されません.JavaScriptの値が定義されていないグローバル変数typeof undefined も定義されていない.未定義は定数やキーワードではありません.undefined 1つの値を持つ型です.新しい値を代入すると、未定義の型の値は変更されません.
未定義の8つの方法
  • 値を指定せずに宣言された変数.
  • 戻り値のない文による関数の暗黙のリターン.
  • 明示的に何も返さないステートメントを返します.
  • オブジェクト内の存在しないプロパティの検索.
  • 渡されなかった関数パラメータ.
  • 未定義の値に設定されたもの.
  • ボイド(表現)の形のどんな表現でも
  • 定義されていないグローバル変数の値
  • NULLnull 「値なし」を示すためにプログラマが使用する空であるか存在しない値を意味します.NULLはプリミティブ値であり、NULLを任意の変数に割り当てることができます.NULLはオブジェクトではなく、プリミティブ値です.たとえば、プロパティを追加できません.時々、人々は誤ってオブジェクトであると仮定します.

    2 . = = = = = = =
    最も簡単な言い方== 型をチェックしません.=== 両側が同じタイプかどうかチェックします.それで== PEは同じ型で両方を持ち、比較を行います.=== 型と値を比較します.したがって、両側が同じタイプでないならば、答えは常にfalseです.たとえば、2つの文字列を比較する場合、同じ文字セットを持たなければなりません.他のプリミティブ(数値、Boolean)については、同じ値を共有する必要があります.
    暗黙の保磁力のための規則:使用による比較== フードの下での暗黙の型変換を行います.そして、暗黙の保磁力のための規則は以下の通りです
  • 両方のオペランドが同じタイプ使用であるならば===
  • 未定義== NULL
  • つのオペランドがストリングであるならば、もう一つは数です
  • つがbooleanで、もう一つが非booleanの場合、booleanを数値に変換し、比較を実行します
  • 文字列または数値をオブジェクトに比較しながら、そのオブジェクトをプリミティブ型に変換して比較する

  • 3 . true false
    今、私は、どちらが真実か間違っているかについて議論します
  • 'False ' 文字列だから本当です.空文字列のみが偽です
  • ' ' は、空の文字列ではないためです.そこには白いスペースがあります.
  • {} が真.それはオブジェクトです.プロパティのないオブジェクトはオブジェクトです.
  • [] これも真実です.配列オブジェクト(配列はオブジェクトの子)です.
  • '' また、
  • 変数の値が未定義値を表している場合.それから、これはまた、false
  • すべての整数値はtrueですが、0はfalseです.
  • デフォルトで変数が定義されない場合、この値はfalseになります.

  • 4 .この
    すべての関数の実行時に、JavaScriptは現在の実行コンテキストを参照する関数としてプロパティを設定します.これは常にオブジェクトを参照し、関数の呼び出し方によって異なります.この変化の価値が異なる場合があります.
  • グローバルコンテキストまたは関数の内部では、これはウィンドウオブジェクトを参照します.
  • オブジェクトのコンテキストで関数を実行している間、オブジェクトは
  • settimeout関数の中で、この値はウィンドウオブジェクトです.
  • コンストラクタを使用してオブジェクトを作成する場合、この値は新しく作成されたオブジェクトを参照します.
  • この値は、オブジェクトをバインド、呼び出し、または適用の最初のパラメータとして渡すことで、任意のオブジェクトに設定できます
  • DOMイベントハンドラの場合、この値はイベントを解凍した要素になります

  • スコープ
    スコープは、実行時のコードの特定の部分の変数、関数、およびオブジェクトのアクセシビリティです.言い換えると、スコープはコードの領域の変数や他のリソースの可視性を決定します.
    JavaScript言語では、2種類のスコープがあります.
  • グローバルスコープ
  • ローカルスコープ

  • 6 .グローバルスコープ
    // the scope is by default global
    var name = 'Chayan';
    
    グローバルスコープ内の変数にアクセスでき、他のスコープで変更できます.
    var name = Chayan;
    
    console.log(name); // logs Chayan
    
    function logName() {
        console.log(name); // 'name' is accessible here and everywhere else
    }
    
    logName(); // logs Chayan
    

    7 .ローカルスコープ
    関数内で定義された変数は、ローカルスコープにあります.そして、それらの関数の呼び出しごとに異なるスコープがあります.これは、同じ名前の変数が異なる関数で使用できることを意味します.これは、これらの変数がそれぞれのそれぞれの関数にバインドされており、それぞれ異なるスコープを持ち、他の関数ではアクセスできません.

    ブロックスコープ
    ifとswitch条件やwhileループのようなブロック文は、関数とは異なり、新しいスコープを作成しません.ブロック文の中で定義された変数は、すでに存在している範囲に残ります.
    if (true) {
        // this 'if' conditional block doesn't create a new scope
        var name = Chayan; // name is still in the global scope
    }
    
    console.log(name); // logs Chanyan
    

    バインド、コールと適用の違い
    call ()とapply ()メソッドの間の混乱の主な原因は、これ以外に追加の引数を渡す方法です.そして、なぜbind ()を使うのですか?
    だからどのように簡単に3つのアパートを伝える方法を学びましょう.
    apply ()apply(this [, [arg1, arg2,...]]) : この値を指定して関数を呼び出します.さらなる引数は一つの配列として提供されます.

    Way to remember: “Apply accepts arguments as an Array” or “AA”


    call ()call(this [, arg1, arg2...]) : 指定した関数を呼び出します.更なる議論はコンマ区切りリストとして提供されます

    Ways to remember: “Call’s arguments are separated by commas” or “CC”.


    bind ()bind(this) : この値が指定された値にバインドされた新しい関数を返します.

    Ways to remember: bind() is the only method out of the three that returns a new function altogether. It does not call the function.



    Javascriptの閉鎖
    閉鎖はJavaScriptの重要な概念の一つです.それは広く議論され、まだ概念を混乱させる.閉じるこの動画はお気に入りから削除されています.
    クロージャは、外側関数が返された後でさえ、内部関数が常にVarsとその外部関数のパラメーターを持つことを意味します.内部関数は、外部関数の変数とパラメータにアクセスできます.次の例を考えます.
    function OuterFunction() { 
    var outerVariable = 1;
     function InnerFunction() { 
    alert(outerVariable); 
    } 
    InnerFunction();
     }
    
    この例では、innerfunction ()はoutervariableにアクセスできます.
    さて、上記の定義に従って、InnerFunction ()は別々に実行されてもOutterVariableにアクセスできます.次の例を考えます.
     function OuterFunction() {
     var outerVariable = 100;
     function InnerFunction() {
     alert(outerVariable);
     }
     return InnerFunction;
     }
     var innerFunc = OuterFunction(); 
    innerFunc(); // 100
    
    上の例ではreturn InnerFunction; outerfunction ()をコールした際に、この関数から関数を返します.変数innerFunc onnerfunction ()だけを参照してください.したがって、innerFunction ()をコールすると、まだアクセスできますouterVariable を返します.これを閉鎖と呼ぶ.

    カプセル化
    カプセル化は情報隠蔽を意味する.これは、オブジェクトの内部の部品の可能な限り隠れていると最小限のパブリックインターフェイスを公開している.
    JavaScriptのカプセル化を作成する最も簡単で最もエレガントな方法はクロージャを使用しています.クローズは、プライベート状態の関数として作成できます.同じプライベート状態を共有する多くのクロージャを作成する場合、オブジェクトを作成します.