前振り
Eloquent JavaScriptの1から4章まで読んでいるのでその記録にメモを残していく。
2. Program Structure
実際にプログラムと呼ぶものを扱う
-
バインディング
- プログラムがどのように内部情報を保持するか?
- jsはbindingまたはvariableと呼ぶものを提供する
let catch = 5 * 5
- バインディングが上記のように値を示す場合、それは
=
で新たに別の値を保持することができる - バインディングは箱ではなく触手のようなものを想像するとイメージしやすい。
-
バインド名
- 任意の単語を使用可能。ただし以下の制約がある
- 先頭文字を数字で始めることはできない
-
$
や_
を含めることは可能だが他の特殊文字は使用できない - 以下のコードブロック記載の単語は予約語であり、バインド名には使用できない。(一部のみ記載。予約語は他にもある)
- 任意の単語を使用可能。ただし以下の制約がある
break case catch class const continue debugger default
delete do else enum export extends false finally for
function if implements import interface in instanceof let
new package private protected public return static super
switch this throw true try typeof var void while with yield
-
環境
- 特定の時間に存在するバインディングとその値のコレクションは環境と呼ばれる
- プログラム起動時にもからではなく、言語標準の一部であるバインディングが含まれている状態である
-
関数
-
戻り値
- 関数が値を生成するとその値を返す。
-
制御フロー
- 基本的に上から下に向けて順次実行する。ただし以下のような例外もある
- 条件付き実行
- if分岐
- ループ
- while
- do
- for
- switch文での値のディスパッチ
-
インデントコード
- 必須ではないがコードの構造をに安くするために有用
- インデントコードは半角スペース2つを用いる人がいれば4つを用いる人もいる。
- 必須ではないがコードの構造をに安くするために有用
-
大文字
-
コメント
- 以下の文字列の後ろはコメントになる
- //
- 以下の文字列の後ろはコメントになる
演習
- Looping a triangle
// Your code here.
for( step=0; step < 8; step++){
console.log("#".repeat(step));
}
- FizzBuzz
// Your code here.
for (step=1; step < 101; step++ ){
if(step % 15 == 0) {
console.log('step: FizzBuzz', step);
}
else if( step % 3 == 0 ){
console.log('step: fizz', step);
}
else if(step % 5 == 0) {
console.log('step: buzz', step);
}
}
- Chessboard
// Your code here.
for (step=1; step < 9; step++ ){
if(step % 2 == 0) {
console.log('# # # #');
}
else {
console.log(' # # # #');
}
}
#参考文書