JavaScript関数をよく知っています.

2670 ワード

関数はJavaScriptの中で最も基本的な要素であり、基本中の基礎であり、関数については一知半解であれば、関数に基づいて構築されたJavaScript知識体系も堅固ではない.基本は一番大切なものですから、しっかりと見極めてください.
一、関数を作成する方法
1.1関数の説明
単純に使用するfunction+関数名:
function a() {...}
二つのポイント:一、単純性を強調し、関数を説明するコードはいかなる表現にも属さず、関数名を指定しなければならない.
また、関数申明はJavaScript解釈器によって事前に実行されますので、以下のコードは間違いないです.
//   :test
a();

function a() {
    console.log("test");
}
1.2関数式
1.2.1何が式ですか?
関数式を理解するには、まず表式とは何かを明確にする必要があります.数式の定義は、数学的な観点から見れば、数値、演算、パケットオペレータ()、変数からなる値を求めることを目的としています.キーワード:価値を求めることを目的とします.プログラミング言語での表式は結果を計算するためのものです.
1.2.2関数式の定義
式で定義された関数.
定義によって、関数式には固定的な書き方がなく、判定基準は一つしかないことが分かります.関数が表現に定義されているかどうか、または表現として存在しています.例を挙げて説明します
//     “function() {...}”     (           )   a
var a = function() {..};

//     “function() {...}”     (           )  t   
function t(function(){
});

//             ,JavaScript        ()    
(function() {});

//             :       
var a = function b() {...};
以上の例のfunction() {...}function b() {...}は関数式ですが、単独で使用するfunction() {...}function b() {...}は関数式ではないので、関数式はコンテキストの環境を持たなければならないことが分かります.この環境では、式の関数として函数式であり、本質的には式です.
関数式の関数名は省略できます.関数名を指定していない関数は匿名関数と呼ばれます.匿名関数は単独では存在しません.式としてのみ存在します.
1.3命名関数式
1.3.1存在の意義
一般的には関数式は関数名を指定する必要はなく、匿名関数としてのみ存在しますが、名前を指定しなければならない場面があります.関数式では関数自体を呼び出します.
var a = function b(n) {
    n--;
    if (n > 5) {
        b(n);
    }
};
上の例は説得力がないと思うかもしれません.関数で説明する方法で実現できるからです.ただし、以下の例は、ネーミング関数式のみで実行できます.
function a(function b(n) {
    n--;
    if (n > 5) {
        b(n);
    }
});
この例では、関数式はパラメータとして存在します.自身を呼び出すには、関数の名前しか指定できません.(argments.callee()は呼び出し関数自体を実現することができますが、es 5からはstrict modeでの使用は禁止されています.
1.3.2 ie中のbug
ネーミング関数の表現はECMAScript仕様では、関数名が外部には見えないので、関数の内部でのみ使用できます.
var a = function b() {};

//   :b is not defined
console.log(b);
しかし、ie 8及びie 8以下のバージョンでは、関数名は訪問できます.ie 8でネーミング関数式を使用したら、ぜひこのバグの影響に注意してください.幸い、ie 9からマイクロソフトはこのバグを修復しました.
二、IIIIF(すぐに呼び出す関数式)
JavaScriptの開発において、一番頭が痛い問題は命名衝突です.この問題を解決するために、まず考えたのは全部の属性と方法を一つのグローバル変数にかけて、単一のグローバル変数を実現することです.極致を追求するために、人々は0グローバル変数の解決策を探し始めました.まず思いつくのは匿名関数です.なぜですか?ロジックは簡単です.名前がないからです.匿名関数は関数式としてしか存在しないので、以下のコードがあります.
(function() {...})();
function() {...}は匿名関数であり、パケットオペレータによって表現として存在しているが、この表式の計算結果は明らかに関数であり、関数である以上、()によって実行を呼び出すことができる.三、なぜ関数も対象ですか?
JavaScriptにはキーワードがあります.Functionは、F大文字であることに注意してください.これは構造方法です.私たちが作成した関数は、本質的にはFunctionの例です.だから、関数は実在のオブジェクトです.関数はいつ対象としますか?関数の属性や方法を使う時、ちょっと回りくどいですが、JavaScriptはこのように設計しています.関数も属性と方法を持っています.