【学習記録】『スラスラ読める JavaScriptふりがなプログラミング』読書感想 4章編(前半)(https://qiita.com/Molly95554907/items/fbadbec14c4b02c4ee3a ) の続き
・戻り値を返す関数
つまり、ただ処理を実行したり、引数を表示したりするのではなく、何か計算をしてその答えを返す関数。 戻り値=関数の答えlet 関数名 = () => {
//関数内で実行する文
return 結果の値;
};
↓
関数名();
を実行すると、
結果の値
が出力される。
例)
let square = (number) =>{
return number * number;
};
console.log(square( 3 ));
↓
9が出力される(戻り値)
・オブジェクトを用いて複数のデータを一つの変数にまとめる
重要項目。つまるところオブジェクトって何なんだろ………オブジェクトを、複数のデータを記録する入れ物として使う。
変数 = { プロパティ1 : 値a, プロパティ2 : 値b }
オブジェクトからプロパティを取り出す際は、
「変数.プロパティ1」と書くと、値a が取り出せる。
変数['プロパティ1']と書いても、値a が取り出せる。
例)
let myfavoritebooks = { title:'1984', author: 'George Orwell', publicationYear: 1949, pages: 328};
console.log( myfavoritebooks.title ); //1984と出力(値が出る)
console.log( myfavoritebooks.pages ); //328と出力(値が出る)
※オブジェクトを表のタイトル、プロパティを表の項目、値を表の中身と思うと理解しやすい!!
・配列の中にオブジェクトを入れる
先ほどのオブジェクトは、 「好きな本」オブジェクトの中に{「タイトル」プロパティ、「著者」プロパティ、「出版年」プロパティ、「ページ数」プロパティ}が入っていた。→好きな本を複数「好きな本」オブジェクトに入れるには…
オブジェクトを入れた配列を作る!
let myfavoritebooks = [
{ title:'1984', author: 'George Orwell', publicationYear: 1949, pages: 328},
{ title:'コンビニ人間', author: '村田沙耶香', publicationYear: 2016, pages: 160}
];
console.log( myfovoritebooks[0].author ) //George Orwell が出力
console.log( myfovoritebooks[1].title ) //コンビニ人間 が出力
【N予備校 三章「集計処理を行うプログラム」】
ここでは、4つのプロパティ(集計年,都道府県名,10〜14歳の人口,15〜19歳の人口)を持つCSVのデータストリングを「,」で区切り、
columnsという変数の箱の中に、配列としてデータを格納していく。
CSVの最初のプロパティの値(columns[0])を整数化し、変数yearに代入する。
CSVの二つ目のプロパティの値(columns[1])を変数prefectureに代入する。
CSVの四つ目のプロパティの値(column[3])を整数化し、変数popuに代入する。
・関数を組み合わせる
「関数定義」、「データ」、「関数呼び出し」を組み合わせてプログラムを作る。
一つのファイルに書くとプログラムが長くなるので、複数のファイルに分割すると良い。
例)
『スラスラ読める JavaScriptふりがなプログラミング』P149のコードを利用
関数定義
//メールを作る関数
let createMail = (recv, bill) = >{
let mag = `${recv}様
PT企画の斎藤です。
今月の請求額は${bil}円です。`
console.log(msg)
};
↑
引数を二つ持つ関数
//手数料を追加する関数
let addCharge = (bill) => {
return bill * 1.07;
};
↑
返り値を持つ関数
<h6>データを貼り付ける</h6>
//送付先データ
let data = [
{name:'山本', bill:40000, crg:true } ,
{name:'吉田', bill:25000, crg:false }
];
↑
配列の中にオブジェクトを入れる。オブジェクトの中のプロパティは、本文に貼り付けたい順に入れている。
//メール作成実行
for(let rec of data){
let bill = rec['bill']
if(rec(['crg']){
bill = addCharge(bill);
}
createMail(rec['name'],bill);
}
↑
data配列の中のオブジェクトをひとつづつ、変数recに入れていく。
変数recの中のbillプロパティを持った値を、変数billとする。
もし変数recの中のcrgプロパティーを持った値がtrueなら、
変数billに、関数addCharge(bill)の戻り値を代入する。
createMail関数を実行する。引数には変数recの中のnameプロパティを持った値と、変数billをとる。
疑問点
・疑問① javaScriptは関数が上から下に実行される性質を持つんだよね? なのに、プログラムの最初に登場するbillは、 プログラムの最後にlet billで定義されるってどういうことなんだろう。・疑問②
関数内で作った変数は「ローカル変数」
関数外では呼び出せないんだよね?
なのに。for(let rec of data){}
の繰り返し文の中で作ったbill変数が、プログラムの最初の
let createMail = (recv, bill) =>{}
で呼び出されているのは何故だろう。
・関数の呼び出し
作った関数は、
module.export = {
関数名,
};
を使うと、同じフォルダ(ディレクトリ)の別ファイルからもこの関数が参照できるようになる。