@@ -543,14 +543,15 @@ for文中の処理の最初で`array[i]`を別の変数(例えば`value`)に代
543543プログラミングではそれらを組み合わせて多種多様な処理を作っていくわけです。
544544しかし処理のたびに毎回同じコードを書くのは気が引けますよね?もし一連の処理に名前をつけて呼び出せたら...。ここではそれを実現する愉快な仲間たちを紹介します。
545545
546- > このセクションは全体的にだいぶ端折った説明をしています。
546+ > このセクションは全体的にだいぶ端折った説明をしています。
547547> より詳細な説明は参考文献から[ mdn web docs] ( https://developer.mozilla.org/ja/docs/Web ) や[ JSPrimer] ( https://jsprimer.net/ ) の該当箇所を読んでください。
548548
549549### 6-1. 関数
550550
551551#### 6-1-1. 関数
552552
553- すでに関数の呼び出しは資料中にたくさん登場しています。例えば` console.log() ` は立派な関数呼び出しです。このように関数は` 関数名(引数) ` という形で呼び出せます。
553+ すでに関数の呼び出しは資料中にたくさん登場しています。例えば ` console.log() ` は立派な関数呼び出しです。
554+ このように関数は ` 関数名(引数) ` という形で呼び出せます。
554555
555556プログラム中では基本的に以下のように記述できます。
556557
@@ -594,13 +595,15 @@ function solveQuadraticEquation (a, b, c) {
594595let result = solveQuadraticEquation (3 , 5 , 7 );
595596```
596597
597- ここで ` a ` , ` b ` , ` c ` は** 仮引数** と呼ばれ、関数の呼び出し時に` () ` の中の対応する位置に与えられた値(** 引数** )を参照できます。その後 ` return ` で関数の処理結果を ** 返り値 ** として呼び出し元に返しています。
598- この` return ` 文は値を返す必要がない関数では省略可能です。
598+ ここで ` a ` , ` b ` , ` c ` は** 仮引数** と呼ばれ、関数の呼び出し時に ` () ` の中の対応する位置に与えられた値(** 引数** )を参照できます。
599+ その後 ` return ` で関数の処理結果を ** 返り値 ** として呼び出し元に返しています。 この` return ` 文は値を返す必要がない関数では省略可能です。
599600` return ` は値を返す、つまり関数の処理を終えたことを意味します。そのため上記の処理のように処理の途中で関数を終了したり、条件によって複数の終了処理を記述することができます。
600601
601602#### 6-1-2. 無名関数
602603
603- JSで頻出する関数の書き方として、名前はないけど関数として宣言されて実行されるものがあります。それが** 無名関数** です。以下のようなものが無名関数と呼ばれます。
604+ JS で頻出する関数の書き方として、名前はないけど関数として宣言されて実行されるものがあります。それが** 無名関数** です。
605+
606+ 以下のようなものが無名関数と呼ばれます。
604607
605608``` javascript
606609function (msg ) {
@@ -612,8 +615,8 @@ function (msg) {
612615};
613616```
614617
615- 後者は特別に** アロー関数** と呼ばれる場合もあります。これらは返り値として関数を返します。
616- そのため、以下のように変数に代入して変数名の後ろに` () ` をつけることで代入した関数を呼び出すことができます。
618+ 後者は特別に** アロー関数** と呼ばれる場合もあります。これらは返り値として関数を返します。
619+ そのため、以下のように変数に代入して変数名の後ろに ` () ` をつけることで代入した関数を呼び出すことができます。
617620
618621``` javascript
619622const log = function (msg ) {
@@ -625,8 +628,8 @@ log('test');
625628
626629#### 6-1-3. 値としての関数
627630
628- 6-1-2.では無名関数を変数に代入していました。このことから、JSの関数は値として扱えることがわかります。
629- この性質を利用してコールバックという処理方法を取れます。` setTimeout(callback, delay) ` の ` callback ` のように関数を値として渡すことで特別な処理がしやすくなります。
631+ 6-1-2. では無名関数を変数に代入していました。このことから、JS の関数は値として扱えることがわかります。
632+ この性質を利用してコールバックという処理方法を取れます。` setTimeout(callback, delay) ` の ` callback ` のように関数を値として渡すことで特別な処理がしやすくなります。
630633
631634``` javascript
632635setTimeout (() => {
@@ -640,17 +643,18 @@ setTimeout(() => {
640643<details >
641644 <summary ><code >setTimeout</code ></summary >
642645
643- ` setTimeout ` は` setTimeout(callback, delay) ` のように2つの引数を取ります。
644- ` callback ` はコールバック関数で` delay ` ミリ秒後に実行されます。
645- また、返り値として正の整数値を返します。これは登録されたタイマーを一意に識別するためのIDです。` setTimeout ` が呼ばれてから` delay ` ミリ秒の間に` clearTimeout(id) ` とすることで登録されたコールバック関数の実行をキャンセルできます。
646+ ` setTimeout ` は ` setTimeout(callback, delay) ` のように2つの引数を取ります。
647+ ` callback ` はコールバック関数で ` delay ` ミリ秒後に実行されます。
648+ また、返り値として正の整数値を返します。これは登録されたタイマーを一意に識別するためのIDです。
649+ ` setTimeout ` が呼ばれてから ` delay ` ミリ秒の間に ` clearTimeout(id) ` とすることで登録されたコールバック関数の実行をキャンセルできます。
646650</details >
647651
648652### 6-2. オブジェクト
649653
650654#### 6-2-1. 定義とアクセス
651655
652- オブジェクトの名はここまでにも登場していますが、あらためて説明します。
653- JSにおけるオブジェクトとは 、キーと値が対になった** プロパティの集合** です。
656+ オブジェクトの名はここまでにも登場していますが、あらためて説明します。
657+ JS におけるオブジェクトとは 、キーと値が対になった** プロパティの集合** です。
654658以下の文法で定義・アクセスできます。
655659
656660``` javascript
@@ -664,12 +668,14 @@ console.log(obj.key1, obj['key2']);
664668
665669![ オブジェクトのサンプル実行結果] ( imgs/object-sample.png )
666670
667- このとき、` [] ` (ブラケット記法)を利用したアクセスでは` obj['key2'] ` のように、プロパティ名を文字列として記述するほうが望ましいです。仮に` obj[key2] ` と記述してアクセスしようとしたとき、` key2 ` が変数として解釈されて未定義のためエラーが発生します。
668- これに対して、` . ` (ドット記法)を利用したアクセスでは、使えないプロパティ名があることに注意が必要です。数字で始まるプロパティ名やハイフンを含んだプロパティ名はブラケット記法でアクセスする必要があります。
671+ このとき、` [] ` (ブラケット記法)を利用したアクセスでは ` obj['key2'] ` のように、プロパティ名を文字列として記述するほうが望ましいです。
672+ 仮に ` obj[key2] ` と記述してアクセスしようとしたとき、` key2 ` が変数として解釈されて未定義のためエラーが発生します。
673+ これに対して、` . ` (ドット記法)を利用したアクセスでは、使えないプロパティ名があることに注意が必要です。
674+ 数字で始まるプロパティ名やハイフンを含んだプロパティ名はブラケット記法でアクセスする必要があります。
669675
670676#### 6-2-2. プロパティの追加と存在確認
671677
672- JSのオブジェクトは 、一度作成したあとその値自体を変更できる特性を持ちます。これは` const ` を利用して宣言したときも同様です。
678+ JS のオブジェクトは 、一度作成したあとその値自体を変更できる特性を持ちます。これは ` const ` を利用して宣言したときも同様です。
673679そのため、以下のようにしてオブジェクトにプロパティを追加できます。
674680
675681``` javascript
@@ -683,7 +689,10 @@ console.log(obj.key1, obj['key2']);
683689
684690![ オブジェクトにプロパティを追加] ( imgs/objectr-add-property.png )
685691
686- またこの特性から、オブジェクトにないプロパティも参照できてしまいます(参照すると` undefined ` が返ります)。この挙動によるバグを回避するために、いくつかの方法でオブジェクトに目的のプロパティが存在するかを確認することができます。ここでは最も使いやすい手法として** Optional Chaining演算子** ` ?. ` を用いた方法を以下に示します。
692+ またこの特性から、オブジェクトにないプロパティも参照できてしまいます(参照すると ` undefined ` が返ります)。
693+ この挙動によるバグを回避するために、いくつかの方法でオブジェクトに目的のプロパティが存在するかを確認することができます。
694+
695+ ここでは最も使いやすい手法として ** Optional Chaining 演算子** ` ?. ` を用いた方法を以下に示します。
687696
688697``` javascript
689698const obj = {
@@ -711,12 +720,13 @@ console.log(obj?.prop2.key1); // エラー (obj?.prop2 が undefinedになり、
711720console .log (obj? .prop2 ? .key1 ); // X undefined (obj?.prop2 が undefinedになり、undefined?.key1がundefinedになる)
712721` ` `
713722
714- 例えば、APIリクエストのレスポンスにあったりなかったりするプロパティにアクセスするときや、入力が必須でない項目があるフォームなどを扱うときに重宝する機能です。覚えていると良いことがあるかもしれません。
723+ 例えば、API リクエストのレスポンスにあったりなかったりするプロパティにアクセスするときや、入力が必須でない項目があるフォームなどを扱うときに重宝する機能です。
724+ 覚えていると良いことがあるかもしれません。
715725
716726<details>
717727 <summary>オブジェクトのプロパティに関数を</summary>
718728
719- JSの関数は値として扱える 、という話をしましたが、ならばキーと値が対になったプロパティに関数を使うこともできそうですよね?できます。
729+ JS の関数は値として扱える 、という話をしましたが、ならばキーと値が対になったプロパティに関数を使うこともできそうですよね?できます。
720730
721731 ` ` ` javascript
722732 const basicArithmeticOperations = {
@@ -764,7 +774,7 @@ class <クラス名> {
764774例えば
765775- クラス名: ` MyClass`
766776 - 文字列を与えて初期化できる(与えなくても初期値をもつ)
767- - ` printText` メソッドを呼び出すことで自身が持つ文字列を出力する
777+ - ` printText` メソッドを呼び出すことで自身が持つ文字列を出力する
768778
769779というクラスを実装してみます。
770780
@@ -788,8 +798,8 @@ class MyClass {
788798const myClass = new MyClass (' my text' );
789799` ` `
790800
791- これで自身の文字列として` ' my text' ` を持つ` MyClass` のインスタンスを生成して` myClass` に代入できました。
792- ` myClass` から ` printText` メソッドを呼び出せば` ' my text' ` と出力されるはずです。
801+ これで自身の文字列として ` ' my text' ` を持つ ` MyClass` のインスタンスを生成して ` myClass` に代入できました。
802+ ` myClass` から ` printText` メソッドを呼び出せば ` ' my text' ` と出力されるはずです。
793803
794804` ` ` javascript
795805myClass .printText ();
0 commit comments