06. 関数を学ぼう
01. 関数定義
02. 関数の型注釈
03. 引数の省略
04. 引数の分割代入
05. 可変長引数
06. 関数式
例)
function mixer(fruits) { return fruits + "ジュース"; } const juice: string = mixer("リンゴ"); console.log(juice);
02. 関数の型注釈
引数と戻り値にデータ型を指定
function mixer(fruits: string): string { ... }戻り値を返さないことを明確にする場合は void型
function hello(): void { ... }任意のデータ型を指定する場合は any型 (基本的には使わない)
function mixer(fruits: any): any { ... }
03. 引数の省略
引数の型注釈の右側に「=デフォルト値」を記述すると引数省略可能(デフォルト引数)となる
が、無理やりできないこともない
function mixer(fruits: string = "りんご"): string { ・・・ }デフォルト引数は、省略できない引数よりも右側に置かなければならない
が、無理やりできないこともない
function mixer(a: string = "りんご", b: string): string { ・・・ } mixer(undefined, "ばなな");
04. 引数の分割代入
仮引数を[]で囲むと、実引数で渡した配列の要素が前から順番に代入される
function mixer([a, b]: string[]): string { ・・・ } mixer(["りんご", "ばなな" ,"みかん"]); // "みかん"は無視される不要な要素の数だけカンマを記述すると、その部分に対応する実引数は破棄される
function mixer([a, , b]: string[]): string { ・・・ } mixer(["りんご", "ばなな" ,"みかん"]); // "ばなな"は無視される分割代入にもデフォルト引数を指定可能
function mixer([a, b, c = "ばなな"]: string[]): string { ・・・ } mixer(["りんご", "みかn"]); // cには"ばなな"がはいる引数全体を省略可能とするには、型注釈の右側に配列形式でデフォルト型を指定
function mixer([a, b, c = "ばなな"]: string[] = ["あ", "い", "う"]): string {
05. 可変長引数
個数が決まっていない引数のこと
function mixer(a: string, ...b: string[]) { let mix: string = a; for (const x of b) { mix += x; } return mix; } console.log(mixer("a","b","c","d")); // "abcd" console.log(mixer("a")); // "a"※残余引数に値を指定しないと undefinedではなく空の配列となる
06. 関数式
関数を実行する方法は2つ
1. 関数の定義を宣言してから呼び出す方法
2. 関数の定義を変数に代入してから呼び出す方法
07. アロー関数
08. スコープ
09. 型ガード
1. 関数の定義を宣言してから呼び出す方法
function hello() { ... } hello();
2. 関数の定義を変数に代入してから呼び出す方法
const hello = funtion() { // ← 関数式 ... } hello(); // ← 関数オブジェクト
07. アロー関数
関数式をシンプルな書式で記述
ES6で拡張されたJavaScript構文
2. アロー演算子の追加
3. ()の省略
4. {}の省略
ES6で拡張されたJavaScript構文
// 従来の関数定義 function hello(message) { console.log(message); } // 従来の関数式 const hello = function(message) { console.log(message); } // アロー関数 const hello = message => console.log(message)1. キーワードfuntionの省略
const hello = (message) { console.log(message); }
const hello = (message) >= { console.log(message); }
const hello = message >= { console.log(message); }
関数の処理が1行だけで済む場合は {} を省略可
5. returnの省略 const hello = message >= console.log(message);読みずらい場合は => の後ろで改行できる。(=>の前の改行は不可)
{}を省略した場合は式の値をreturnしたことになる
アロー関数の型注釈 // 従来の関数式 const message = function() { return "hello"; } // アロー関数 const message = () => "hello"; // = return "hello"; // {}を省略した場合はreturnが必須 const hello = () => {return "hello";} // const hello = () => {"hello";} // エラーにはならなかった undefinedが返る
const mixer = (fruits: string): string => { ... }引数の()を省略した場合は、引数も戻り値を型注釈が使えない
08. スコープ
・ローカルスコープ
・ブロックスコープ
・グローバルスコープ
・if文やfor文などの制御が及ぶ範囲
・関数スコープ
・関数の処理内容を記述する場所
・ローカル変数
・ローカルスコープで宣言した変数
・ローカルスコープに含まれない場所で宣言した変数
・一度宣言した変数を同じスコープ内で再度宣言することはできない 09. 型ガード
・変数の型を調べるには "typeof" を使う
・typeof x === "string"
・typeof x === "number" など
・型ガード関数 ・typeof x === "number" など
・戻り値の型注釈を「仮引数 is データ型」とする
function isString(x: string | number): x is string { return typeof x === "string"; } function isNumber(x: string | number): x is number { return typeof x === "number"; }
学習, JavaScript, TypeScript
0 件のコメント:
コメントを投稿