수학적 계산을 수행합니다. 불가능한 경우 NaN을 반환합니다.
❗부수 효과(피연산자의 값을 변경)가 없습니다.
1개의 피연산자를 연산합니다.
var x = 1;
x++; // x=x+1=2
x--; // x=x-1=1
❗증가/감소 연산자는 위치에 의미가 있습니다.
``` javascript
var x = 5, result;
//선할당 후증가
result = x++;
console.log(result, x) // 5 6
//선증가 후할당
result = ++x;
console.log(result, x); //7 7
❗ 숫자타입이 아닌 피연산자에 +나 - 단항연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환합니다.
피연산자를 변경하는 것은 아니고 변환한 값을 반환할 뿐입니다.
-단항 연산자는 거기에 반전까지 끼얹습니다.
+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작합니다.
'1' + 2; // '12'
개발자의 의도와는 상관없이 엔진에 의해 암묵적으로 타입이 자동 변환되는 경우가 있습니다.
// true가 1로 타입변경
1 + true; // 2
// false가 0으로 타입변경
1 + false; //1
// null은 0으로 변경
1 + null / 1
//undefined는 숫자 타입으로 변경이 안됩니다.
1 + undefined // NaN
우항에 있는 피연산자(표현식)의 평가 결과를 좌항에 잇는 변에 할당합니다.
❗할당 연산자는 변수에 값을 할당하므로 부수효과가 있습니다.
var x=10;
x += 5 // x=x+5=15
x -= 5 // x=x-5=10
x *= 5 // x=x*5=50
x /= 5 // x=x/5=10
x %= 5 // x=x%5=0
//문자열 연결
var str = "my name is";
str +="Lee" // str = str + "Lee" = "my name is Lee"
결과는... true/false 다...
부수효과는 .... "없습니다"
헷갈리니까 그냥 일치 비교 써
❗NaN은 자신과 일치하지 않은 유일한 값입니다. 숫자가 NaN인지 궁금하면 Number.isNaN을 씁시다
❗양의 0과 음의 0을 비교하면 무조건 true로 나옵니다. Object.is를 씁시다.
조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때 반환할 값
삼항 조건 연산자를 사용한 문은 값으로 평가할 수 잇는 표현식입니다.
근데?? if..else문은 그냥 문입니다. 대신 가독성이 좋음
!(x || y) === (!x && !y)
!(x && y) === (!x || !y)
왼쪽 피연산자부터 차례대로 피연산자를 평가하고, 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.
var x,y,z;
x=1, y=2, z=3; //3
좌항은 밑으로, 우항은 지수로 거듭제곱
2 2; // 22 = 4
2 0; // 20 = 1
헷갈리니까 걍 () 그룹연산자만 알고 잇어