- 피연산자 는 연산자가 연산을 수행하는 대상. 5*2 에는 왼쪽 피연산자 5와
오늘쪽 피연산자 2, '피연산자'는 '인수(argument)'라는 용어로 불리기도 함 - 피연산자를 하나만 받는 연산자는 단항(unary). 피연산자의 부호를 뒤집는
단항 마이너스 연산자 -는 단항 연산자의 대표적인 예입니다. - 두개의 피연산자를 받는 연산자는 이항(binary) 연산자(operator).
수학 연산자는 다음과 같음
- 덧셈 연산자 +
- 뺄셈 연산자 -
- 곱셈 연산자 *
- 나눗셈 연산자 /
- 나머지 연산자 %
- 거듭제곱 연산자 **
특별한 점은 거듭제곱 연산자는 정수가 아닌 숫자에 대해서도 동작
alert( 4 ** (1/2) ); // 2 (1/2 거듭제곱은 제곱근)
alert( 8 ** (1/3) ); // 2 (1/3 거듭제곱은 세제곱근)
이항 연산자와 '+'와 문자열 연결
만약 문자열이 들어온다면 인수로 들어온다면 둘을 합친다.
let s = "my" + "string";
alert(s); // mystring
근데 중요한건 이항 연산자 중에 하나라도 문자열이면 다른 하나도
문자열로 변환된다는 점을 주의!
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"
또 주의할 점은 연산이 왼쪽에서 오른쪽으로 순차적 진행이 되기 때문에
숫자가 먼저 온다면 먼저 연산을 진행하고 그 이후 문자열과 병합이 일어난다
다른 산술 연산자는 오직 숫자형의 피연산자만 다루고, 넘버 타입이 아니라면
그 값의 타입을 넘버타입으로 바꾼다. 덧셈과는 대조적
alert( 6 - '2' ); // 4, '2'를 숫자로 바꾼 후 연산이 진행됩니다.
alert( '6' / '2' ); // 3, 두 피연산자가 숫자로 바뀐 후 연산이 진행됩니다.
단항 연산자 +와 숫자형으로의 변환
// 숫자형이 아닌 피연산자는 숫자형으로 변화합니다.
alert( +true ); // 1
alert( +"" ); // 0
다른 경우엔 별거 없지만 넘버 타입이 아닐 경우엔
넙버타입으로 바꿔주는 연산자 +.
그래서 Number(...)보다 빠르고 짧은 문법으로 같은 일이 가능
let apples = "2";
let oranges = "3";
// 이항 덧셈 연산자가 적용되기 전에, 두 피연산자는 숫자형으로 변화합니다.
alert( +apples + +oranges ); // 5
연산자 우선순위
우선순위를 무시하려면 괄호를 쓰면 되고
거의 모든 연산자들이 우선순위가 매겨져 있음. 클수록 먼저 실행된다
위에 단항 연산자들이 먼저 실행되는 이유는 표와 같이 단항 덧셈과 부정 등
이항 보다 우선하기 때문.
할당 연산자
할당할 때 쓰이는 =도 연산자이다. 우선순위는 3으로 아주 낮고
다른 것이 다 연산되고나서 할당이 되기에 제일 낮은 편.
연산자이기에 신기한 함축성도 내포하고 있는데
대부분의 값은 값을 반환한다. + - 뿐만 아니라 = 역시도.
증가 감소 연산자
증가 연산자 ++는 변수를 1증가 시킴.
반대로 감소 연산자 --는 1을 감소시킴
피연산자 앞에 올 때와 뒤에 올 때가 나뉘는데
각각 전위형, 후위형으로 불린다.
앞에 오던 뒤에 오던 상관없이 1을 증가시켜주지만
let counter = 1;
let a = counter++; // (*) ++counter를 counter++로 바꿈
alert(a); // 1
console.log(counter); //2
이런 식으로 후위형은 증가 전으 기지노 값을 반환한다 (???)
비트 연산자 (bitwise operator)
이는 인수를 32비트 정수로 변환하여 이진 연산을 수행
JS뿐만 아니라 대부분 다른 언어에서도 지원
- And (&)
- or (|)
- XOR(^)
- NOT (~)
- 왼쪽 시프트 (<<)
- 오른쪽 시프트 (>>)
- 부호 없는 오른쪽 시프트 (>>>)
비트 연산자는 저수준(2진 표현) 에서 숫자를 다뤄야할 때 쓰이므로
잘 안쓰니까 만나게 되면 그 때 다시 찾아보거나 하세요
쉼표 연산자
이것도 보기 힘들고 특이하다는데 짧게 쓰려는 의도로 가끔 쓰임
여러 표현식을 한 줄에 평가할 수 있게하고 평가되지만, 마지막 표현식만 반환되기에 조심
let a = (1 + 2, 3 + 4);
alert( a ); // 7 (3 + 4의 결과)
'JavaScript > Basics' 카테고리의 다른 글
[JavaScript] if와 '?'를 사용한 조건 처리 (0) | 2022.03.09 |
---|---|
[JavaScript] 비교 연산자 (0) | 2022.03.09 |
[JavaScript] 형 변환 (0) | 2022.03.09 |
[JavaScript] 브라우저에서 유저와 상호작용이 가능한 함수 (alert, prompt, confirm) (0) | 2022.03.09 |
[JavaScript] 자료형 - Data Types (0) | 2022.03.09 |