====== 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.の結果〕