[7章]演算子


7.1算術演算子
1)この演算子:+、-、*、/、%
2)単項演算子:+、--、+、-
3)数学計算により新しい数値を生成する演算子.
4)非数値タイプの被演算子に+単項演算子を使用し、被演算子を数値タイプに変換して返します.
5)算術演算ができない場合はNANを返す.
'1'+2; // -> '12'
1+'2'; // -> '12'
1+true; // -> true가 1로 타입 변환되므로, 2
1+false; // -> false가 0으로 타입 변환되므로, 1
1+null; // -> null이 0으로 타입 변환되므로, 1
undefined; // -> NaN 
1+undefined; // -> NaN. undefined는 숫자로 타입 변환되지 않는다. 

x=true, y='1', z='Hello';
console.log(+x, +y, +z); //1 1 NaN
上記のコードでは、true変換が1、false変換が0、null変換が0のように、開発者の意図に関係なくタイプも自動的に変換されます.これをデフォルト変換、タイプ強制変換と呼びます.
7.2割付演算子
1)割当て演算子:=、+=、-=、*=、/=、%=
2)付与文は、値で評価される式文です.
したがって、複数の変数の連鎖に対して同じ値を割り当てることができる.
var a, b, c;
a = b = c = 0;
7.3比較演算子
1)ピア/照合比較演算子:==、===、!=、!=
2)比較大文字小文字演算子:<、>、<=、>=
3)==わあ!=値のみを比較します.==と!=銀の値とタイプを比較します.==わあ!=演算子の場合は、値を比較するだけなので、比較前に暗黙的なタイプで一致するタイプを変換し、同じ値であるかどうかを比較します.
5==5; //true
5===5; //true
5=='5'; //true
5==='5'; //false
4)NANは自分と一致しない唯一の値である.したがって,数値がNaNであるかどうかを調べるにはisNaN()関数を用いる必要がある.
NaN===NaN; //false
5) Object.is
Object.is法をES 6に導入した.予測可能な正確な比較結果を返します.
-0===+0; //true
NaN===NaN; //false
Object.is(-0,+0); //false
Object.is(NaN,NaN); //true
7.4三項条件演算子
1)3つの条件演算子:(条件式?条件式がtrueの場合の戻り値:条件式がfalseの場合の戻り値)
const value = true;
const result = value ? "value는 true입니다." : "value는 false입니다.";
console.log(result); //value는 true입니다.
2)3つの条件演算子とif...else文比較
3つの演算子式は値のように使用できますが、if...else文は値のように使用できません.
7.5論理演算子
1)論理演算子:|、&、!
被演算子がboolean値でない場合、boolean typeに変換されます.
7.6カンマ演算子
1)カンマ演算子:
2)カンマ演算子左の被演算子から順に被演算子を評価し、最後の被演算子の評価が終了すると、最後の被演算子の評価結果を返します.
var x, y, z;
x=1, y=2, z=3; //3
7.7グループ化演算子
1)グループ演算子:()
2)数学の()と同じ意味である.演算子の優先度を調整する役割を果たします.
3)グループ化演算子の演算子優先度が最も高い.
7.8 type of演算子
1)typeof演算子:typeof
2)被演算子のデータ型を文字列に戻します.
3)被演算子のデータ型:「string」、「number」、「boolean」、「undefined」、「symbol」、「object」、「function」
4)nullを返さない場合.
typeof null; //object
7.9指数演算子
1)指数演算子:**
2)左項の被演算子に基づき、右項の被演算子に指数を乗じて数値を返します.
3)指数演算子は、この演算子の中で最も優先度が高い.
2**0; //2의 0제곱 == 1
2**-2; //2의 -2제곱 == 0.25
2**2**2; //(2의 2제곱)의 2제곱 == 16