図1に示すように、関数宣言
構文:
関数functionNameを(パラメータ){ コードの実行 }
関数宣言がすぐに実行されていないが、関数宣言を強化します後、私たちは、初期化時に必要とするとき、我々は呼び出します。
2、関数式(匿名関数)
構文:
VAR X =関数(a、b)は、{* Bを返します;}
VaRのZ = X(4、3);
上記の機能は、実際には 匿名関数 (名前のない関数)。
変数に格納された関数は、関数名は通常、変数名によって呼び出され、必要とされていません。
図3に示すように、機能()コンストラクタ
(関数())JavaScriptの組み込み関数ビルダーで定義されました。
構文:
VARのMyFunction = 新機能( ""、 "B"、 "* Bを返します" ); VAR X = MyFunctionを(4、3);
実際には、コンストラクタを使用する必要はありません。上記の例は次のように書くことができます。
VARのMyFunction = 関数(a、b)は{ 返す * Bを}; VAR X = MyFunctionを(4、3);
4、関数呼び出しから
関数式は、「自己のコール。」ことができます
自己表現の通話は自動的に呼び出します。
後者の式が続く場合()自動的に呼び出されます。
あなたは、関数宣言自体を呼び出すことはできません。
それは関数式であることを状態にブラケットを追加することにより:
(関数(){ VAR X- = "こんにちは!!"; // 私は自分自身を呼び出します })(); // 無名関数からの呼び出し
5、矢印機能
ES6は矢印の機能を追加しました。
アロー関数式の構文は、通常の関数式より簡潔です。
構文:
(パラメータ1、パラメータ2、...、Nのパラメータ)=> {}関数宣言 (パラメータ1、パラメータ2、...、Nのパラメータ) => 式(単一) // 対応:(パラメータ1、パラメータ2、...、Nのパラメータ)=> {return式;}
ときだけ1つのパラメータの括弧はオプションです。
(単一のパラメータ)=> {}関数宣言
単一のパラメータ => {}関数宣言
引数は括弧のペアとして書かれてはなりません。
()=> {}関数宣言
例:
// ES5 VAR X = 関数(X、Y){ リターン X * Y。 } // ES6 CONST X =(X、Y)=> X * Y。
いくつかの関数は、独自の矢ではありません この。トップ不適当 オブジェクトメソッド。
私たちは、矢印の機能を使用する場合は、この本の外層の矢印機能と値が同じであるので、ヘルプは、私たちは、この結合層の機能のデフォルト値を矢印します。
アロー機能を使用すると、使用する前に定義する必要があり、昇格することはできません。
使用して、 CONST よりも、 VAR 関数式が常に一定であるため、より安全。
関数は、文の一部のみである場合は、returnキーワードと中括弧{}を省略することができ、これは良い習慣です。
6、ファンクションポイントの使用に注意を払います
(1)機能を強化します
- 前のチュートリアルでは、「巻き上げ(リフティング)。」学びました
- リフトは(巻き上げ)JavaScriptが動作するように、フロントへのアップグレードの現在のスコープのデフォルトです。
- リフト(巻き上げ)は、アプリケーション機能の変数と文で宣言しました。
- したがって、関数が宣言する前に呼び出すことができます。
MyFunctionを(5 )。 関数MyFunctionを(Y){ 戻り Y * Y。 }
注:関数を定義した式を使用するときは、アップグレードすることはできません。
(2)機能オブジェクト
- JavaScriptで typeof演算 オペレータ決意機能「機能」のタイプを返します。
- しかし、JavaScriptの機能をより正確にターゲットと説明しました。
- JavaScript関数を持ち 、属性 や メソッドを。
- arguments.lengthをプロパティは、関数呼び出しが受信したパラメータの数を返します。
関数MyFunctionを(B){// 2 arguments.lengthをを返します。 }
toString()メソッドは、関数などの文字列を返します。
関数MyFunctionを(a、b)は{ 返す * Bと、 } VAR TXT = myFunction.toString()。 // 関数MyFunctionを(a、b)は、{* Bを返します。}