ループ文
for文
for(let i = 0; i < 10; i++){
console.log(i);
}
出力結果 0 1 2 3 4 5 6 7 8 9
for(初期値 forから抜ける条件 iが1ループごとにどのように変化していくか){}
while文
let i = 0;
while(i < 10) {
console.log('i');
i++;
}
出力結果 0 1 2 3 4 5 6 7 8 9
let i = 0; など、初期値設定
while(ループを継続する条件){}
演算子
A ? B
値(オペランド)をもとに処理を行い、結果を返す記号
演算子の優先順位
リンク内について↑
<結合性>
演算子が値に挟まれていた時、どちらから処理を行うのか
let a = 0;
console.log(a);
let b = a++;
console.log(b);
出力結果
0
0
インクリメント演算子(++)は前につけるか後につけるかで結果が変わる。
+が後ろの場合.js
let a = 0;
console.log(a);
let b = a++;
console.log(a,b);
出力結果
0
1,0
+が前の場合.js
let a = 0;
console.log(a);
let b = ++a;
console.log(a,b);
出力結果
0
1,1 //aの0に対して+1された値が出力される
let a = 0;
let b;
a = (b = a) +1;
function fn() {
let a = 0;
return a++;
}
console.log(!fn() * 5);
//(!0 * 5) ⇨ falseじゃない(1)✖️5ってこと
出力結果 5
グループ化を用いて!(内容)と記述すると、
console.log(!(fn() * 5));
// !0 と同意なので
出力結果 true
ループ文とブロックスコープ
for(let i = 0, i < 5; i++){
const j = i * 2;
setTimeout(一秒後行う処理,1000);
}
↓
for(let i = 0; i < 5; i++){
const j = i * 2;
setTimeout(function() {
console.log(j);
},1000);
}
出力結果
0
2
4
6
8
配列とループ
const arry = [1, 2, 3, 4, 5];
for(let i = 0; i< arry.length; i++) {
console.log(arry[i]);
}
配列.length で配列の要素を取得できる。
ここでは i< arry.length; で 全ての各配列の要素と、iを比較している
while文で書き換え↓
const arry = [1, 2, 3, 4, 5];
let v, i = 0;
while(v = arry[i++]){
console.log(v);
}
条件 arry [ i++ ] 各配列の要素をプラス1(i)したものがv
for...inと列挙可能性
列挙可能*プロパティーに対して準不動で反復処理を実行する。
*文字列プロパティ名/値/キー値ペアの配列
プロトタイプチェーン内も列挙対象となる。
symbolで定義したプロパティーはfor...inで列挙対象にならない。
for...ofと反復可能性
for ... of を使用することによってイテレーターを持つオブジェクトの反復操作を行う。
イテレーターとは
反復操作を行う際に使用するオブジェクト。(string,array,map,set,arguments,etc...)
これらのオブジェクトは反復可能オブジェクトと呼ばれ、for...ofの使用が可能
mapとset
データを管理するための入れ物(コレクション)。
オブジェクトとmapの違い
オブジェクト | map | |
---|---|---|
キー | 文字列 | 制約なし(数値、obj、関数など) |
for...in | ループ可能 | ループ不可能 |
Array | set | |
---|---|---|
重複値 | ⭕️ | ❌ |
for...in | ループ可能 | ループ不可能 |
for...of | ループ可能 | ループ可能 |