JavaScript関数はfunction
キーワードで定義されています。
関数宣言または関数式を使用できます。
関数宣言
このチュートリアルの前半では、関数が次の構文で宣言されていることを学びました:
//実行するコード
}
宣言された関数はすぐには実行されません。 それらは「後で使用するために保存され」、呼び出されたとき(呼び出されたとき)に後で実行されます。
例
a*bを返す;
}
それを自分で試してみてください”
セミコロンは、実行可能なJavaScript文を分離するために使用されます。
関数宣言は実行可能なステートメントではないため、セミコロンで終わるのは一般的ではありません。
関数式
JavaScript関数は、式を使用して定義することもできます。
関数式を変数に格納することができます:
例
自分で試してみてください”
関数式が変数に格納された後、その変数を関数として使用できます:
例
var z=x(4,3);
自分で試してみてください”
上記の関数は実際には無名関数(名前のない関数)です。
変数に格納されている関数には関数名は必要ありません。 それらは常に変数名を使用して呼び出されます(呼び出されます)。
上記の関数は、実行可能ステートメントの一部であるため、セミコロンで終わります。
Function()コンストラクタ
前の例で見たように、JavaScript関数はfunction
キーワードで定義されています。
関数は、Function()
と呼ばれる組み込みのJavaScript関数コンストラクタで定義することもできます。
例
var x=myFunction(4,3);
自分で試してみてください”
実際には関数コンストラクタを使用する必要はありません。 上記の例は、書き込みと同じです:
例
var x=myFunction(4,3);
自分で試してみてください”
ほとんどの場合、JavaScriptでnew
キーワードを使用することは避けることができます。
Function Hoisting
このチュートリアルの前半では、”hoisting”(JavaScript Hoisting)について学びました。
ホイストは、宣言を現在のスコープの先頭に移動するJavaScriptのデフォルトの動作です。
巻き上げは、変数宣言と関数宣言に適用されます。
このため、JavaScript関数は宣言される前に呼び出すことができます:
function myFunction(y){
return y*y;
}
式を使用して定義された関数はホイストされません。
自己呼び出し関数
関数式は”自己呼び出し”にすることができます。
自己呼び出し式は、呼び出されることなく自動的に呼び出されます(開始されます)。
式の後に()が続くと、関数式は自動的に実行されます。
関数宣言を自己呼び出しすることはできません。
に追加して括弧の機能を示すことで機能発現:
例
var x=”こんにちは!!”;//私は自分自身を呼び出します
})();
自分で試してみてください”
上記の関数は、実際には匿名の自己呼び出し関数(名前のない関数)です。
関数を値として使用することができます
JavaScript関数を値として使用することができます:
例
return a*b;
}
var x=myFunction(4,3);
自分で試してみてください”
JavaScript関数は式で使用できます:
例
return a*b;
}
var x=myFunction(4, 3) * 2;
関数はオブジェクトです
JavaScriptのtypeof
演算子は関数に対して「関数」を返します。
しかし、JavaScript関数はオブジェクトとして記述するのが最善です。
JavaScript関数にはプロパティとメソッドの両方があります。
arguments.length
プロパティは、関数が呼び出されたときに受け取った引数の数を返します:
例
引数を返します。length;
}
自分で試してみてください”
toString()
メソッドは関数を文字列として返します:
例
return a*b;
}
var txt=myFunction.toString();
自分で試してみてください”
オブジェクトのプロパティとして定義された関数は、オブジェクトのメソッドと呼ばれます。
新しいオブジェクトを作成するために設計された関数は、オブジェクトコンストラクタと呼ばれます。
Arrow Functions
Arrow functionsでは、関数式を記述するための短い構文を使用できます。
function
キーワード、return
キーワード、中括弧は必要ありません。
例
var x=function(x,y){
return x*y;
}
// ES6
const x=(x,y)=>x*y;
自分で試してみてください”
矢印関数には独自のthis
はありません。これらは、オブジェクトメソッドの定義には適していません。
矢印機能は掲揚されません。 それらは、使用する前に定義する必要があります。
関数式は常に定数値であるため、const
を使用する方がvar
を使用するよりも安全です。
関数が単一のステートメントである場合は、return
キーワードと中括弧のみを省略できます。 このため、常にそれらを保つために良い習慣かもしれません:
例
自分で試してみてください”
矢印関数は、IE11以前ではサポートされていません。