====== JavaScript 関数の定義 ====== --- //[[http://www.y2sunlight.com/water|y2sunlight]] 2021-04-05// ===== 関数の定義 ===== 以下による定義方法がある。 * function文 * Functionコンストラクタ * 関数リテラル * アロー関数[[js:top#ECMAScript|*2015]] \\ ===== function文 ===== function 関数名(引数, ・・・) { // 本体 return 戻り値; } console.log(getArea(10, 20)); // 結果:200 function getArea(height, width) { return height * width; } \\ ===== Functionコンストラクタ ===== var 変数名 = new Function(引数, ・・・, 関数本体); var func1 = new Function('height', 'width', 'return height * width'); var func2 = new Function('height, width', 'return height * width'); // どちらの形式でも良い console.log(func1(10, 20)); // 結果:200 console.log(func2(10, 20)); // 結果:200 \\ ===== 関数リテラル ===== var 変数名 = function(引数, ・・・) { // 関数本体 return 戻り値; }; var func = function(height, width) { return height * width; }; console.log(func(10, 20)); // 結果:200 関数リテラルは、無名関数又は匿名関数とも呼ばれる。 \\ \\ ===== アロー関数 ===== [[js:top#ECMAScript|*2015]] var 変数名 = (引数, ・・・) => { // 関数本体 return 戻り値; }; var func = (height, width) => { return height * widht; }; console.log(func(10, 20)); var area = r => Math.PI * r * r; console.log(area(10)); var sayHello = () => console.log('Hello'); sayHello(); \\ ===== 第1級オブジェクト ===== JavaScriptの関数は第1級オブジェクトである。 * 変数へ格納できる * 引数にできる * 戻り値にできる * コンストラクタできる * 独自の存在をもつ(無名可能) function func1(height, width){return height * width} var func2 = new Function('height, width', 'return height * width'); var func3 = function(height, width){ return height * width }; var func4 = (height, width) => { return height * width }; function callFunc(height, width, func){ console.log(func(height, width)); } callFunc(1, 10, func1); // 結果:10 callFunc(2, 10, func2); // 結果:20 callFunc(3, 10, func3); // 結果:30 callFunc(4, 10, func4); // 結果:40