目次

JavaScript 演算子

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・・・+, -, *, /, % (算術)
    &, |, <<, >>, >>> (ビット)

分割代入

*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演算子を使う
voidDOM

deleteの例

data1 = 1;
delete data1;  // 削除できる
var data2 = 1;
delete data2;  // 削除できない


優先順位

優先順位演算子
カッコ類 [],()
インクリメント/デクリメント、単項演算子
算術 【高】*, /, % 【低】+, -
シフト
比較 【高】<, ⇐, >=, > 【低】==, !=, ===, !==
ビット【高】&, ^, |【低】
論理 【高】&&, ||【低】
条件
代入
カンマ

結合則

優先順位が同じ時の演算の順序

左結合 ・・・ 左 → 右に演算する(算術、比較、論理、ビットなど)

a + b - c
  1. a + b
  2. 〔1.の結果〕+ c

右結合 ・・・ 右 → 左に演算する(単項、代入、条件など)

a = b = c;
  1. b = c
  2. a = 〔1.の結果〕
!!!a;
  1. !a
  2. !〔1.の結果〕
  3. !〔2.の結果〕