====== JavaScript 演算子 ======
--- //[[http://www.y2sunlight.com/water|y2sunlight]] 2020-10-20//
===== 算術演算子 =====
+, -, *, /, %, ++, --
* 数 + 数 → 数
* 非数 + 数 → 文字
非数とは文字列またはオブジェクト
x = 1;
y = x++; // y=1,x=2
y = ++x; // y=3, x=3
a = 3;
x = (a++) * (2+a); // x=18, a=4
\\
===== 代入演算子 =====
=, OP=
OP・・・+, -, *, /, % (算術)
&, |, <<, >>, >>> (ビット)
==== 分割代入 ====
[[js:top#ECMAScript|*2015]]
=== 配列 ===
let data = [1, 2, 3, …];
let [x, x2, x3, …] = data;
=== オブジェクト ===
let data = {id:1, name:'iwata', …};
let {id:user_id, name:user_name, …} = data;
console.log(user_id, user_name);
\\
===== 比較演算子 =====
==, !=, <, <=, >, >=
===, !===, → 同値演算子(型と値が同じ)
?: → 条件演算子
\\
===== 論理演算子 =====
&&, ||, !
falsyの値 ・・・ (空文字), 0, null, undefined Nan \\
'0'はfalsyでない(※PHPと違う)
\\
==== ショートカット演算(短絡演算)====
msg = msg || 'Default Message';
msg = msg ? msg : 'Default Message';
msg = msg ?? 'Default Message'; // [ES2020]
\\
===== ビット演算子 =====
&, |, ^, ~, <<(論理シフト), >>(算術), >>>(論理シフト)
\\
===== その他の演算子 =====
|演算子|説明|
|,(カンマ)|''制御文''|
|delete|配列要素、オブジェクトプロパティ、宣言のない変数の削除 \\ data1 = 1; \\ delete data1; // 削除できる \\ var data2 = 1; \\ delete data2; // 削除できない |
|instanceof|''オブジェクト''|
|new|''オブジェクト''|
|typeof|データ型を返す(基本型:number, string 参照型:object) \\ ※参照型を詳しく調べたい時はinstanceof演算子を使う|
|void||''DOM''|
=== deleteの例 ===
data1 = 1;
delete data1; // 削除できる
var data2 = 1;
delete data2; // 削除できない
\\
===== 優先順位 =====
^優先順位^演算子^
| 高 |カッコ類 [],()|
| |インクリメント/デクリメント、単項演算子|
| |算術 【高】*, /, % 【低】+, -|
| |シフト|
| |比較 【高】<, <=, >=, > 【低】==, !=, ===, !==|
| |ビット【高】&, ^, |【低】|
| |論理 【高】&&, ||【低】|
| |条件|
| |代入|
| 低 |カンマ|
===== 結合則 =====
優先順位が同じ時の演算の順序
**左結合** ・・・ 左 → 右に演算する(算術、比較、論理、ビットなど)
例
a + b - c
- a + b
- 〔1.の結果〕+ c
**右結合** ・・・ 右 → 左に演算する(単項、代入、条件など)
例
a = b = c;
- b = c
- a = 〔1.の結果〕
!!!a;
- !a
- !〔1.の結果〕
- !〔2.の結果〕