식이 평가되어 생성된 결과
값으로 평가될 수 있는 문
프로그래밍의 최소 의미 단위
하나 이상의 표현식을 대상으로 하나의 값을 마드는 것
연산의 대상
이항 연산자: 2개의 피연산자를 산술 연산하여 숫자로 만듦 (+, - , *, / ,%)
단항 산술 연산자: 1개의 피 연산자를 산술 연산하여 숫자 값을 만듦 (++, --, +,-)
++ 전위 증가/ 감소: 먼저 피연산자의 값을 변경시킨 후, 다른 연산의 수행
++ 후위 증가/ 감소: 다른 연산 먼저 수행
+단항 연산자는 숫자 타입이 아닌 피연산자를 사용하여 숫자타입으로 변환한다. 하지만, 부수효과는 없다
+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동장
할당문은 표현식인 문이다.
피연산자를 비교한 다음 불리언 값으로 반환
암묵적 타입 변환 때문에, 타입을 일치시긴 후, 같은 값인지 비교한다. 타입이 다르더라도 암무적 타입 변환 후 비교를 한다.
동등 비교 (==) 타입 확인이 없음
일치 비교 (===) 타입 확인까지 함
NaN === NaN 자신과 일치하지 않는 유일한 값이다.
Number.isNam(NaN) //-> true
0 === -0; // -> true
0 == -0; // -> true
Object.is(-0, +0); // -> false
Object.is(NaN,NaN); // -> true
var x = 2;
var result = x % 2 ? '홀수' : '짝수';
console.log(result); // 짝수
삼항 조건 연산자 표현식은 값처럼 사용할 수 있지만 if else 문은 값처럼 사용할 수 없다.
|| // -> or
&& // -> and
! // -> not
var x,y,z;
x = 1, y = 2, z = 3; //3
typeof "" // -> string
typeof 1 // -> number
typeof NaN // -> number
typeof true // -> boolean
typeof undefined // -> undefined
typeof null // -> object
typeof [] // -> object
typeof {} // -> object
typeof new Date() // -> object
typeof /test/gi // -> object
null 타입 확인은 typeof가 아닌 일치 연산자(===)을 사용하자.
var foo = null;
typeof fo === null; // -> false
fo === null; // -> true
지수 연산자의 결합 순서는 우항에서 좌항이다.
Math.pow(2,2) // -> 4
부수효과가 있는 연산자는 할당 연산자, 증가/감소 연산자, delete 연산자이다.
1) ()
2) new(매개변수 존재), , , ()(함수호출)
3) new(매개변수 미존재)
4) x++, x-
5) !x, +x, -x, ++x, -x, typeof, delete
6) * (이항 연산자 중에서 우선순위가 가장 높다)
7) ,/,%
8) +,-
9) < , <=, >, >=, in, instanceof
10) ==, !=, ===, !==
11) ?? (null 병합 연산자)
12) &&
13) ||
14) ?...:...
15) 할당 연산자(=,+=,-=,...)
16) ,