728x90
연산자 우선순위
a 연산자1 b 연산자2 c
연산자 1과 연산자 2의 자리에는 아무 연산자나 넣을 수 있습니다.
두 연산자의 우선순위(아래 표 참고)가 다를 경우,
우선순위가 높은 연산자가 먼저 실행되고 결합성은 영향을 미치지 않습니다.
console.log(3 + 10 * 2); // 23을 출력
console.log(3 + 10 * 2); // 23을 출력, 괄호는 불필요함
console.log((3 + 10) * 2); // 26을 출력, 괄호로 인해 실행 순서가 바뀜
위 예제에서는
덧셈이 곱셈보다 먼저 쓰였음에도
곱셈의 우선순위가 높기 때문에 먼저 실행됩니다.
a = b = 5; // a = (b = 5);와 같음
대입 연산자는 대입된 값을 반환하므로 a와 b의 값이 5가 됨을 예상할 수 있습니다.
b = 5
우선 b의 값이 5로 설정되고,
a = (b = 5)
그 다음에는 a의 값이 우변인 b = 5의 반환값 5로 설정됩니다.
const num1 = 10;
const num2 = 50;
num2 + num1 / 8 + 2;
(num2 + num1) / (8 + 2);
num2 + num1 / 8 + 2;
이 코드를 사람이 풀이했을 때
"50 + 10 = 60 나누기 8 + 1 = 9"를 계산하면 6이다라고 계산이 되지만
브라우저는 "10 나누기 8은 1.25이고, 50 더하기 1.25 더하기 2는 53.25이다."라고 계산합니다.
이것은 연산자 우선순위 때문입니다.
연산자 우선순위는 어떤 연산자를 먼저 계산할지 결정합니다.
JavaScript에서의 연산자 우선순위는 학교 수학 수업에서 배웠던 것과 같습니다.
곱하기와 나누기는 먼저 계산되고, 더하기와 빼기는 나중에 계산됩니다.
합은 항상 왼쪽에서 오른쪽으로 계산됩니다.
만약 연산자 우선순위를 무시하고 싶다면 괄호()를 사용하여 먼저 계산할 부분을 지정할 수 있습니다.
(num2 + num1) / (8 + 2);
위 코드처럼 작성하면 우리가 원하는 결과값 6을 얻을 수 있습니다.
*아래 표는 우선순위가 높은 순서에서 낮은 순서로 연산자를 나열합니다.
연산자 유형 | 개별 연산자 |
맴버 접근 | . [] |
인스턴스 호출/생성 | () new |
증감 | ! ~ - + ++ -- typeof void delete |
거듭제곱 | ** |
곱하기/나누기 | * / % |
더하기/빼기 | + - |
비트 시프트 | << >> >>> |
관계 | < <= > >= in instanceof |
동등/일치 | == != === !== |
비트 AND | & |
비트 XOR | ^ |
비트 OR | | |
논리 AND | && |
논리 OR | || |
조건 | ?: |
할당 | = += -= **= *= /= %= <<= >>= >>>= &= ^= |= &&= ||= ??= |
쉼표 | , |
728x90
'JavaScript > Basics' 카테고리의 다른 글
[Javascript]웹 콘솔에서 "Hello world" 출력하기 (0) | 2023.09.27 |
---|---|
[Javascript] 연산자(operator) (0) | 2023.09.26 |
[Javascript] 변수 데이터 타입(data types) (0) | 2023.09.26 |
[Javascript] 스코프(scope) - 전역, 지역(함수, 블록) (0) | 2023.09.26 |
[Javascript] var를 지양해야 하는 이유 (0) | 2023.09.26 |