JavaScript関数の整理

2207 ワード

JavaScript関数
関数の基本概念
関数とは、特定の機能を完了するために使用できるコードブロックの一部を繰り返して、任意の回数を実行することです.関数はFunctionタイプのオブジェクトで、彼は自分の属性と方法を持っています.重要な2つの内蔵属性が含まれています.
  • アーグメンント関数のパラメータ
  • this呼び出しコンテキスト
  • JavaScriptは関数式プログラミング言語で、彼の関数は文法でもあり、値でもあります.パラメータとして関数に伝達することができます.関数の結果として返します.関数の実行は機能領域から離れられず、構築されたクローズドも作用領域によって多くの厄介な問題を解決することができる.
    スコープチェーン
    それぞれの関数は自分の作用ドメインを持っていますが、一つの関数は他の関数を入れ替えることができます.一つの作用ドメインは他の作用ドメインと関連しています.作用ドメイン間の相互関連は鎖のように彼らを結びつけています.この鎖は作用ドメインチェーンです.その一番上の層は大域作用領域です.作用分域鎖は明るい秩序化したアクセスを保証することができ、作用分域鎖における変数探索の具体的なプロセスは以下の通りである.
  • は、スコープヘッダから検索を開始し、すなわち変数を呼び出したときにおけるスコープである.
  • 指定された名前の変数にマッチングすると、検索を停止し、変数の値を取得します.そうしないと、上位の作用領域に移り、検索を続けます.
  • が一致していない場合、検索はグローバルスコープに続き、グローバルスコープが見つからない場合、変数はまだ宣言されていないことを示し、検索を終了する.
  • 関数の作成方法
  • 関数ステートメントfunction funcName () {}はいないほうがいいです.ブロックレベルのスコープは関数を使用してif、for文中を宣言します.
  • 関数式let funcName = function () {}.
  • 変数の昇格
    関数宣言の優先度は変数宣言より高いです.
    this呼び出しコンテキスト
    thisの指向性と関数の呼び出し方式.全部で4つの方法でJavaScriptの関数を呼び出します.
  • 一般関数:一般関数として呼び出されると、thisはグローバルオブジェクト(window)を指しますが、厳密なモードでは、thisの値はundefinedです.func() //
  • オブジェクト方法:オブジェクトとしての方法が呼び出された場合、thisは呼び出し方法のオブジェクトを指す.obj.func() //
  • コンストラクタ:コンストラクタとして呼び出されると、new演算子と組み合わせて新しいオブジェクトを作成します.thisはこの新しいオブジェクトを指します.new func() //
  • は、間接的に起動する.関数の方法apply()call()によって間接的に呼び出しを行い、thisの指向性をカスタマイズすることができる.func.call(obj) //
  • 関数のパラメータ
    関数名と形参名はいずれもargmentsとは定義できません.関数のパラメータは2つに分類されます.
  • モダリティ:関数定義時のパラメータをモダリティといいます.
  • 実際参:関数呼び出し時に入ってきたパラメータを実参といいます.
  • 注意:形参と実参の個数は待ちたくないです.関数の内部には特殊なオブジェクトがあります.これは配列オブジェクトで、このパラメータリストを管理します.オブジェクト位置のパラメータは、デジタルインデックスで取得できます.length属性を使用して、入力された引数の数を取得できます.
    関数の再ロード
    関数の再負荷:関数名が同じで、パラメータによって違います.JavaScriptの同名関数は参照個数によって区別されないので、JavaScriptには重荷重がありません.同じ関数名を定義すれば、後の関数は前の関数をカバーします.
    関数の属性と方法
    属性:length:受信したいパラメータの個数方法:
  • call()最初のパラメータ設定thisインジケータ、後に任意の複数の実参照
  • を受け入れる.
  • apply()最初のパラメータは、サース指向を設定し、後は、実パラメータ配列
  • を受け入れる.
  • bit()最初のパラメータ設定this指向は、任意の複数の実参照を後方に困難にし、戻り値は、バインディング指定オブジェクトの新しい関数
  • である.
    callとappyの最大の利点は、関数を拡張して依存する作用領域を言い、呼び出す方法とオブジェクトの間にレンコンを分解させることです.