Javascript問題集(関数)解答
「Javascript問題集(関数)」の解答は下記になります。
問題1の解答
オブジェクトを返す場合、return文にオブジェクトを直接指定します。
function generateHuman(name, age) { return { name: name, age: age }; }
問題2の解答
「コールバック関数」は、「関数の引数」として渡され、後で呼び出される関数です。
一般的に「非同期操作」に使用されます。
function printData(data, callback) { for (let i = 0; i < data.length; i++) { console.log(data[i]); } callback(); } function callbackFunction() { console.log("Process Finished"); } printData(["sun", "earth", "moon"], callbackFunction);
問題3の解答
「スプレッド構文」を使用すると、「配列」や「オブジェクト」を展開して、「関数の引数」として渡すことができます。
function sumData(a, b, c) { return a + b + c; } const numbers = [1, 2, 3]; console.log(susumDatamNumbers(...numbers));
問題4の解答
function getDoubleNumber(num) { return num * 2; }
この関数は、「引数」として渡された数値を「2倍」にして、その結果を返します。
getDoubleNumber(3)
を呼び出すと、「6」が返されます。
問題5の解答
「ジェネレータ関数」は、「function」キーワードの後ろに「アスタリスク(*)」をつけて定義されます。
「ジェネレータ関数」は、値を返すとともに、「関数の実行」を一時停止し、後で再開することができます。
「ジェネレータ関数」では「nextメソッド」を呼び出すことで「yield」まで処理が実行されます。
function* sampleGenerator(data) { yield data * 2; //1回目の「nextメソッド」で実行 yield data * 3; //2回目の「nextメソッド」で実行 yield data * 4; //3回目の「nextメソッド」で実行 } let generator = sampleGenerator(10); console.log(generator.next().value); console.log(generator.next().value); console.log(generator.next().value);
問題6の解答
function reverseString(str) { return str.split("").reverse().join(""); }
この関数は、引数として渡された文字列を逆順にして、その結果を返します。
たとえば、「reverseString("abcde")」を呼び出すと、「"edcba"」が返されます。
問題7の解答
「クロージャー」は、関数内で定義された関数で、「外側の関数の変数」にアクセスすることができます。
「クロージャー」を使用すると、「外側の関数」が呼び出された後でも、「内側の関数」が「外側の変数」にアクセスすることができます。
function sample() { let data = "sampleData"; function showData() { console.log(data); } showData(); } sample();
問題8の解答
function isPdString(str) { let reversedStr = str.split("").reverse().join(""); return str === reversedStr ? true : false; }
この関数は、引数として渡された文字列が「回文」であれば「true」を、そうでなければ「false」を返します。
たとえば、「isPdString("ada")」を呼び出すと、「true」が返されます。
問題9の解答
function getMax(arrayData) { let max = arrayData[0]; for (let i = 1; i < arrayData.length; i++) { if (arrayData[i] > max) { max = arrayData[i]; } } return max; }
この関数は、「引数」として渡された「配列」の中で「最大値」を見つけて、その値を返します。
たとえば、
getMax([2, 5, 3, 7, 1, 8]);
を呼び出すと、「8」が返されます。
問題10の解答
「デフォルト引数」とは、「引数」が関数に渡されなかった場合に使用される値です。
「デフォルト引数」を指定するには、「引数」の後に「代入演算子」を使って値を指定します。
function greet(name = "World") { console.log(`Hello, ${name}!`); } greet(); //「引数」を指定していないため「引数name」はデフォルトの値「World」となる。 greet("Smith"); //「引数」を指定しているため、「引数name」は「Smith」となる
問題11の解答
function repeatProcess(func, times) { for (let i = 0; i < times; i++) { func(); } }
「for文」を使って、「指定された回数」だけ関数を繰り返し実行しています。
問題12の解答
function calcSquare(dataArray) { let squaredArr = []; for (let i = 0; i < dataArray.length; i++) { squaredArr.push(dataArray[i] * dataArray[i]); } return squaredArr; }
この関数は、「引数」として渡された「配列の要素を2乗した値」を要素とする「新しい配列を作成」して、その結果を返します。
たとえば、
calcSquare([2, 5, 3, 7, 1, 8]);
を呼び出すと、
[4, 25, 9, 49, 1, 64]
が返ってきます。
問題13の解答
function isEven(num) { return num % 2 === 0 ? true : false; }
この関数は、「引数」として渡された数値が偶数であれば「true」を、そうでなければ「false」を返します。
たとえば、
isEven(10)
を呼び出すと、「true」が返されます。
問題14の解答
関数内で「this」キーワードを使用すると、呼び出し元によって「this」の値が異なります。
関数からの呼び出しでは、「this」は「グローバルオブジェクト」になります。
オブジェクトの「メソッド」として呼び出された場合、「this」はそのオブジェクトを指します。
//オブジェクトの場合 const human = { name: "John doe", greet() { console.log(`Hello, ${this.name}!`); console.log(this); //「this」は「humanオブジェクト」 } }; human.greet(); //関数の場合 const otherFunc = () => { console.log(this);//「this」は「グローバルオブジェクト(window)」 } otherFunc();
問題15の解答
function joinArrayData(arrayData, separator) { return arrayData.join(separator); }
「joinメソッド」を使って、「配列の要素」を「指定された区切り文字」で結合した文字列を生成しています。
問題16の解答
「プロミス」を使用すると、「非同期操作」をより簡単に扱うことができます。
「プロミス」は、「非同期操作」が完了すると「resolve関数」を呼び出し、エラーが発生した場合は「reject関数」を呼び出します。
const process = new Promise((resolve, reject) => { //Success //処理に成功した時は「resolve」を実行 //resolve("Process Success."); //Failure //処理に失敗した時は「reject」を実行 //reject(new Error("Error.")); }); process.then( (value) => { console.log(value); // Success! }, (error) => { console.error(error); // Error! }, );
問題17の解答
function roundDecimal(num) { return Math.round(num * 100) / 100; }
「Math.roundメソッド」を使って、数値を「小数点以下第二位」で「四捨五入」しています。
具体的には、「引数」の数値に100を掛けてから「Math.roundメソッド」で「四捨五入」し、再度「100」で割ることで、「小数点以下第二位」までの数値に変換しています。
問題18の解答
「アロー関数」は、通常の関数と異なり、「function」キーワードの代わりに「矢印(アロー)」を使用して定義されます。
「アロー関数」は、暗黙的に「return文」を含むため、明示的に「return文」を書く必要はありません。
const sum = (a, b) => a + b; console.log(sum(24, 38));
問題19の解答
function isPositive(num) { return num > 0 ? true : false; }
この関数は、引数として渡された数値が正の数であれば「true」を、そうでなければ「false」を返します。
たとえば、
isPositive(-18)
を呼び出すと、「false」が返されます。
問題20の解答
function getSumNumbers(num1, num2) { return num1 + num2; }
この関数は、引数として渡された2つの数値を足し合わせて、その結果を返します。
たとえば
sumNgetSumNumbersumbers(5, 7)
を呼び出すと、「12」が返されます