[TIL] Function
21738 ワード
関数:論理再実行を許可します.コードの再利用性の向上
上のように『Hello World!メッセージは外部に出力されないため、下図に示すようにパラメータ伝達によりlog関数を呼び出しながら必要なメッセージを柔軟に伝達することができる
関数は入力を受け入れ、入力によって操作を実行することができる. 「入力値」
パラメータは括弧の間で高さと幅として指定され、関数の本文での役割は通常の変数と同じです.
関数を呼び出すときに関数に渡される値を引数と呼びます.
上記の関数呼び出しでは、数字10を幅、6を高さとして指定します. ES 6に追加された機能は、 を含み、関数に渡されたパラメータがない場合、または呼び出し時にパラメータが定義されていない場合、パラメータは予め決定された値を有する.
ES 6に追加された機能...作成後、配列で渡されます
1)配列を出力する場合、of構文出力配列ではなくfor loopを簡単に使用できる
関数+出力キーを終了します.
変数=関数(){}; 式で関数を定義し、関数キーワード を使用します.では、関数名は通常省略され、匿名関数と呼ばれる. 変数名が関数の名前または識別子であることを宣言する場合、es 6以降は主にconstを使用する 関数を呼び出すと、関数を格納する変数名を含むカッコが作成され、その後関数に渡されるパラメータが囲まれます. 関数式はアップグレードされていないため、定義前に を呼び出すことはできません.
このようにfunctionには名前がなく、functionキーワードを使用してparameterとblockを使用するのは匿名関数(anonymousfunction)です.
別の変数に再割り当てされると、printダッシーが最初の行の関数を指しているため、印刷出力が表示されます.
function expressionは、指定した後に呼び出すことができます.すなわちprint()を宣言する前に呼び出すとエラーが発生します
しかし、関数宣言は昇格しています.関数宣言の前に呼び出すことができます.
ES 6は、()=>を使用して関数を作成するArrow Functionを導入した Arrow Functionは、関数の作成時に関数 を追加する必要はありません.
カッコにパラメータを入力し、ではなく=>{}で実行します.つまり、 です.
単一パラメータ()のみを使用する場合は、 を使用する必要はありません.ただし、関数が0以上のパラメータを使用する場合は、カッコ が必要です.
行のブロックを含む関数本文は{大かっこ}を必要とせず、戻りを省略することもできる
例:、括弧 を省く関数は1行ブロックであるため、括弧 は省略する.は1行ブロックであり、 を省略する.
伝達関数、条件に合致するときに伝達された関数を呼び出す
すなわち、printyesとprintnoの2つのコールバック関数がパラメータとして渡され、正解がloveyouの場合、printyes()というコールバック関数、またはprintno()というコールバック関数が呼び出される.
関数宣言と同時に呼び出され、関数の宣言を()に囲み、関数を呼び出すように()を入れます.
📚 余分な物語!
JSにはタイプがないので、残念ながら、関数自体のインタフェースを見たときに文字列を渡すのか数値を渡すのかよくわかりません.
typeが重要であればJSは理解しにくいかもしれないのでtypescriptを使用したほうがいいです.
(*画像ソース:DREAM符号化YouTubeスクリーンショット)
greetWorld(); // Output: Hello, World!
function greetWorld() {
console.log('Hello, World!');
}
🔍 TIP上のように『Hello World!メッセージは外部に出力されないため、下図に示すようにパラメータ伝達によりlog関数を呼び出しながら必要なメッセージを柔軟に伝達することができる
function hello(message) {
console.log(message);
}
hello ('Hi, there!'); // 값을 유동적으로 넣을 수 있음
パラメータ
パラメータは括弧の間で高さと幅として指定され、関数の本文での役割は通常の変数と同じです.
関数を呼び出すときに関数に渡される値を引数と呼びます.
上記の関数呼び出しでは、数字10を幅、6を高さとして指定します.
function sayThanks(name) {
console.log('Thank you for your purchase '+ name +'! We appreciate your business.');
}
sayThanks('Cole');
// Thank you for your purchase Cole! We appreciate your business.
defaultパラメータ(デフォルトパラメータ)
function greeting (name = 'stranger') {
console.log(`Hello, ${name}!`)
}
greeting('Nick') // Output: Hello, Nick!
greeting() // Output: Hello, stranger!
上記の例では、=演算子を使用してパラメータ名に「見知らぬ人」をデフォルト値として割り当てます.
Rest parameters
ES 6に追加された機能...作成後、配列で渡されます
function printAll(...args) {
for (let i = 0; i < args.length; i++) {
console.log(args[i]);
}
}
printAll('hello', 'coding', 'world');
//output : hello coding world
📌 <参照>1)配列を出力する場合、of構文出力配列ではなくfor loopを簡単に使用できる
for (const arg of args) {
console.log(arg);
}
// arg에 있는 값들을 차례로 하나씩 지정되면서 출력하게 됨
2)もっと簡単にしたいなら.forEach()
で出力できますargs.forEach((arg) => console.log(arg));
Return
function monitorCount(rows, columns){
return rows * columns;
};
const numOfMonitors = monitorCount(5, 4);
console.log(numOfMonitors); // 출력값 : 20
📌 Early return, early exit
function upgradeUser(user) {
if (user.point > 10) {
// long upgrade logic...
}
}
upgradeUserという関数に論理があり、ユーザーのポイントが10より大きい場合にのみアップグレードが行われる場合、ifとelseを置き換えるのではなく、条件を満たす場合に必要な論理を実行するために、以下のように迅速に戻ります.function upgradeUser(user) {
if (user.point <= 10) {
return;
}
// long upgrade logic...
}
Function Expressions
variableName(argument1, argument2)
関数を宣言すると同時にprintという変数に割り当てられます.以下に示します.このようにfunctionには名前がなく、functionキーワードを使用してparameterとblockを使用するのは匿名関数(anonymousfunction)です.
別の変数に再割り当てされると、printダッシーが最初の行の関数を指しているため、印刷出力が表示されます.
const print = function() {
console.log('print');
};
print();
const printagain = print;
printagain();
📌 関数宣言と関数式の最大の違いはfunction expressionは、指定した後に呼び出すことができます.すなわちprint()を宣言する前に呼び出すとエラーが発生します
しかし、関数宣言は昇格しています.関数宣言の前に呼び出すことができます.
Arrow Functions(パラメータ)=>{}
ES 6は、
カッコにパラメータを入力し、
const rectangleArea = (width, height) => {
let area = width * height;
return area;
};
Concise Body Arrrow
単一パラメータ
const squareNum = (num) => {
return num * num;
};
胃が再構築されると.const squareNum = num => num * num;
単一パラメータconst plantNeedsWater = (day) => {
if (day === 'Wednesday') {
return true;
} else {
return false;
}
};
再包装すると.const plantNeedsWater = day => day === 'Wednesday' ? True : false;
Callback function (using function expression)
伝達関数、条件に合致するときに伝達された関数を呼び出す
すなわち、printyesとprintnoの2つのコールバック関数がパラメータとして渡され、正解がloveyouの場合、printyes()というコールバック関数、またはprintno()というコールバック関数が呼び出される.
function randomquiz(answer, printyes, printno) {
if(answer === 'love you') {
printyes();
} else {
printno();
}
}
const printyes = function() {
console.log('yes');
}
const printno = function print() {
console.log('no');
};
randomquiz('worng', printyes, printno); // output : no
randomquiz('love you', printyes, printno); // output : yes
IIFE (Immediately Invoked Function Expression)
関数宣言と同時に呼び出され、関数の宣言を()に囲み、関数を呼び出すように()を入れます.
(function hello() {
console.log('IIFE');
})();
📚 余分な物語!
JSにはタイプがないので、残念ながら、関数自体のインタフェースを見たときに文字列を渡すのか数値を渡すのかよくわかりません.
typeが重要であればJSは理解しにくいかもしれないのでtypescriptを使用したほうがいいです.
(*画像ソース:DREAM符号化YouTubeスクリーンショット)
Reference
この問題について([TIL] Function), 我々は、より多くの情報をここで見つけました https://velog.io/@sebely/TIL-Functionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol