연산자
let x; //선언문
x = 3 * 5; // 1. 3*5라는 곱셉 표현식과 곱샘값을 변수 x에 할당하는 표현식
let x, y;
y = x = 3 * 5
y = x = 15 //곱셈 표현식을 평가
y = 15 //첫번째 할당을 평가. x는 15, y는 아직 undefined
15; //두번째 할당을 평가. y는 15, 전체 문의 결과는 15지만 할당하지도 않고 사용하지 않아서 버려진다.
- 표현식은 대부분 연산자 표현식이다.
- 연산자 표현식이 아닌 표현식에는 식별자 표현식과 리터럴 표현식이 있다.
- 연산자를 표현식의 명사에 대한 동사라고 생각해도 된다.
- 표현식이 값이 되는 것이라면 연산자는 값을 만드는 행동.
let x = 2;
const r1 = x++ + x++;
// ((x++) + (x++))
// (2 + (x++)) 왼쪽에서 오른쪽으로 진행한다. x는 3
// (2 + 3) x는 4
// 5
cons r2 = ++x + ++x;
// ((++x) + (++x))
// (5 + (++x)) 왼쪽에서 오른쪽으로 진행한다. x는 5
// (5 + 6) x는 6
// 11 x는 6
const r3 = x++ + ++x;
// ((x++) + (++x))
// (6 + (++x)) 왼쪽에서 오른쪽으로 진행한다. x는 7
// (6 + 8) x는 8
// 14 x는 8
연산자 우선순위
- 같은 연산사들은 오른쪽에서 왼쪽으로 또는 왼쪽에서 오른쪽으로 평가한다.
let x=3, y;
x += 6 = 6*5/2;
// 곱셈과 나눗셈, 우선순위 14, 왼쪽에서 오른쪽으로
// x += y = (6*5)/2
// x += y = 30/2
// x += y = 15
// 할당, 우선순위 3, 오른쪽에서 왼쪽
// x += (y = 15)
// x += 15 y는 15
// 18 x는 18