JavaScript ファンクションの定義
- 前のページ JS オブジェクト参照
- 次のページ JS 関数引数
JavaScriptの関数は、 function
キーワード定義の。
関数を使用できます。宣言または関数表現。
関数宣言
このチュートリアルで少し前に学んだように、以下の構文で宣言関数:
function 関数名(パラメータ) { 実行するコード }
宣言された関数は直接実行されません。彼らは「後で使用するために保存されます」、呼び出されたときに後で実行されます。
インスタンス
function myFunction(a, b) { return a * b; }
セミコロンは、実行可能なJavaScript文を区切ります。
関数宣言実行可能な文ではありません。セミコロンで終わることはよくありません。
関数表現を使用して
JavaScriptの関数は、表現定義するために。
関数表現は変数に保存できます:
インスタンス
var x = function(a, b) {return a * b};
関数表現を変数に保存した後、その変数は関数として使用できます:
インスタンス
var x = function(a, b) {return a * b}; var z = x(4, 3);
上の関数は実際には以下のものです:匿名関数(名前のない関数)。
変数に保存された関数には関数名は必要ありません。彼らは常に変数名を使用して呼び出されます。
上の関数はセミコロンで終わります。それは実行可能な文の一部です。
Function()構造体で
前の例でご覧いただいたように、JavaScriptの関数は function
キーワードで定義された。
関数は、名前が Function()
の内蔵JavaScript関数構造子を使用して定義できます。
インスタンス
var myFunction = new Function("a", "b", "return a * b"); var x = myFunction(4, 3);
実際には、関数構造子を使用する必要はありません。以下のように書いても同じです:
インスタンス
var myFunction = function (a, b) {return a * b}; var x = myFunction(4, 3);
ほとんどの場合、JavaScriptでnewを使用することを避けることができます new
キーワードです。
関数昇格
このチュートリアルで少し前に、「昇格」(hoisting)について学びました。
HoistingはJavaScriptが宣言現在のスコープの先頭に移動するデフォルトの動作です。
Hoistingは変数宣言と関数宣言に適用されます。
そのため、JavaScriptの関数は宣言の前に呼び出すことができます:
myFunction(5); function myFunction(y) { return y * y; }
表現で定義された関数は昇格されません。
自呼び出し関数
関数表現は「自呼び出し」として機能できます。
自呼び出し表現は自動的に呼び出されます(開始)が、呼び出しを行わない場合もあります。
関数表現は自動的に実行されますが、表現の後ろに ()
。
関数宣言に対して自呼び出しはできません。
関数表現を示すために、関数の周りに括弧を追加する必要があります:
インスタンス
(function () { var x = "Hello!!"; // 自分自身を呼び出します }();
上の関数は実際には以下のものです:匿名の自関数(名前のない関数)。
関数は値として使用できます
JavaScriptの関数は値として使用できます:
インスタンス
function myFunction(a, b) { return a * b; } var x = myFunction(4, 3);
JavaScriptの関数は表現式中使用できます:
インスタンス
function myFunction(a, b) { return a * b; } var x = myFunction(4, 3) * 2;
関数はオブジェクトです
JavaScriptの typeof
演算子は関数に「」を返します:function
「」。
ただし、JavaScriptの関数をオブジェクトとして説明するのが最善です。
JavaScriptの関数にはすべてあります属性およびメソッド。
arguments.length
関数が呼び出されたときに受け取った引数の数を返します:
インスタンス
function myFunction(a, b) { return arguments.length; }
toString()
メソッドは文字列として関数を返します:
インスタンス
function myFunction(a, b) { return a * b; } var txt = myFunction.toString();
オブジェクト属性として定義された関数は、オブジェクトのメソッドと呼ばれます。
新しいオブジェクトを作成するために設計された関数は、オブジェクト構造関数(オブジェクト構造器)と呼ばれます。
アロー関数
アロー関数は、関数式を簡略化するために使用される短い文法を提供します。
functionキーワード、returnキーワード、およびブラケットは必要ありません。
インスタンス
// ES5 var x = function(x, y) { return x * y; } // ES6 const x = (x, y) => x * y;
アロー関数には自分自身のthisがありません。したがって、オブジェクトメソッドとして定義するのに適していません。
アロー関数は昇格されません。使用前に定義する必要があります。
constを使用することはvarを使用するよりも安全です。なぜなら、関数式は常に常量値であるためです。
関数が単一のステートメントである場合、return キーワードおよびブラケットを省略することができます。したがって、それらを保持することが良い習慣になるかもしれません:
インスタンス
const x = (x, y) => { return x * y };
IE11 以降のバージョンではアロー関数がサポートされていません。
- 前のページ JS オブジェクト参照
- 次のページ JS 関数引数