Skip to content

Commit 272721c

Browse files
committed
言葉づかい変更
1 parent 390c008 commit 272721c

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

docs/6-exercise/1-basis-of-web/index.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ if (box <= 30 && weight <= 2000) {
269269

270270
## 6. バブルソート
271271

272-
引数に対して「バブルソート」という整列アルゴリズムを行い、整列済み配列を返す関数`bubbleSort()`を書きます。
272+
引数に対して「バブルソート」という整列アルゴリズムを行い、整列済み配列を返す関数`bubbleSort()`を作成しましょう。<br />
273273
そのアルゴリズムは次の通りです。
274274

275275
- ソート前配列のある要素を取り、その一つ後ろの要素と比較する
@@ -320,28 +320,30 @@ function bubbleSort(array) {
320320

321321
### <Term strong type="javascriptReference">参照</Term>と<Term strong type="javascriptSideEffects">副作用</Term>の話
322322

323-
本回答例では返り値をarrayに代入していないにも関わらず、arrayの中身が変わってしまいます。なぜでしょうか?<br>
323+
本回答例では返り値をarrayに代入していないにも関わらず、arrayの中身が変わってしまいます。なぜでしょうか?<br />
324324
(参照の節)[../browser-apps/constant/#参照]で説明したように、これは配列が評価されたときにそれ自身ではなく、配列の<Term strong type="javascriptReference">参照</Term>が得られるからです。関数を実行したときに返り値以外に関数外部に影響を与えることを<Term strong type="javascriptSideEffects">副作用</Term>と呼び、<Term strong type="javascriptSideEffects">副作用</Term>を持たない関数を<Term strong type="javascriptPureFunction">純粋関数</Term>と呼びます。思わぬ<Term type="javascriptSideEffects">副作用</Term>を防ぐために共用の関数は<Term type="javascriptPureFunction">純粋関数</Term>であることが望ましいとされています。また関数のマクロ的役割である「操作のまとまり」として、<Term type="javascriptSideEffects">副作用</Term>である外部へのアクセス(画面への表示、インターネットのアクセス、ファイルの入出力など)をひとまとめにする場合は、専用の関数を作成し、それを明示すべきであるとされています。関数の引数以外の可変変数を参照することは<Term strong type="javascriptReferenceTransparency">参照透過性</Term>の妨げになり、デバッグが難しくなるといわれています。
325325
上の関数を<Term strong type="javascriptPureFunction">純粋関数</Term>に書き直すと例えば、
326326

327327
<Answer>
328328

329329
```diff javascript
330-
+ // swapIndexは純粋関数ではないが、あくまでモジュール化のプロセスでしかなく、外部では使わないので、予期せぬ副作用は発生しにくいためこのままでもよい
330+
331+
+ /* swapIndexは純粋関数ではないが、あくまでモジュール化のプロセスであり、
332+
+ 外部では使わないので、予期せぬ副作用は発生しにくいためこのままでもよい */
331333
function swapIndex(array, indexA, indexB) {
332334
const temp = array[indexA];
333335
array[indexA] = array[indexB];
334336
array[indexB] = temp;
335337
}
336-
function bubbleSort(array) {
337-
+ let willResult = array.slice(); // 配列の値をコピー
338+
- function bubbleSort(array){
339+
+ function bubbleSort(inputArray) {
340+
+ let array = inputArray.slice(); // 配列の値をコピー
338341
for (let i = array.length - 1; i > 0; i--) {
339342
for (let j = 0; j < i; j++) {
340-
+ if (willResult[j] > willResult[j + 1]) swapIndex(willResult, j, j+1);
341-
- if (array[j] > array[j + 1]) swapIndex(array, j, j+1);
343+
if (array[j] > array[j + 1]) swapIndex(array, j, j+1);
342344
}
343345
}
344-
+ return willResult;
346+
+ return array;
345347
}
346348
```
347349

0 commit comments

Comments
 (0)