관리 메뉴

흰둥씨의 개발장

[오늘의 자바스크립트] 연산자 본문

[오늘의 공부]/Javascript

[오늘의 자바스크립트] 연산자

돈워리비해삐 2022. 12. 14. 22:14

1.  산술 연산자 

=(대입 혹은 할당), +(더하기), -(빼기), *(곱하기), /(나누기), %(나머지값), **(거듭제곱)


자바스크립트의 연산은 사칙연산의 방식을 대부분을 그대로 따릅니다
+ , - 연산자만 있을때 왼쪽에서 오른쪽으로 순차연산하고,
* , / 연산자만 있을 때 왼쪽에서 오른쪽으로 순차 연산하며,
+,-,*,/ 가 함께 있을때는 곱하기, 나누기가 먼저 연산되고 더하기, 빼기는 나중에 연산됩니다.
또, (...)가 있는 경우 (...)먼저 연산 후 나머지를 연산합니다.
 
 
 
- 피연산자 : 연산자가 연산을 수행하는 대상('피연산자’는 '인수(argument)'라는 용어로 불리기도 함)
ex) 2*9 ; 곱하기 연산자의 왼쪽연산자는 2, 오른쪽연산자는 9입니다
 
- 단항(unary) 연산자 : 피연산자를 하나만 받는 연산자
ex) -1, +3...

- 이항(binary) 연산자 : 두 개의 피연산자를 받는 연산자
ex)4+25...
 
- 대입 연산자(=, 할당연산자) : 무언가를 할당할 때 쓰는 연산자
ex) x = 25;
할당연산자의 체이닝: 할당연산자를 여러개 연결하는 것
ex)let a, b, c; a = b = c = 2 + 2;
다만, 위 예시와 같이 연결된 경우, 평가는 우측부터 진행이 됩니다.
2+2연산이 먼저 진행된 이후 값이 c->b->a순으로 할당됩니다. (위와 같이 연결하면 가독성에 좋지 않아 권장하지 않는 방식임)
 

2. 비교연산자

<(작다),  >(크다), ==(같다), <=(작거나 같다), <=(크거나 같다), !=(같지 않다), 

===(완전히 같다), !==(완전히 같지 않다)

 두 개 이상의 값 비교하며, 왼쪽 피연산자 기준으로 평가합니다.

주로 조건문에서 많이 사용되며 결과 값은 true(1)와 false(0)로 출력됩니다.
자바스크립트에서는 boolean을 넣지 않아도 자동변환하여 연산합니다.
 
==은 0과 false를 구별하지 못하지만, 일치 연산자(strict equality operator) ===는 형 변환 없이 구별할수있습니다.
 
let i;
 0 == false; //true
 0 === false; //false (데이터 타입불일치 하기 때문에)
 
i = 1==true; //1은 데이터 타입 true이다. -> true(1)
i = 1===true; // 1은 === 데이터 타입까지 완전히 같지 않다(엄격한 비교)->false(0)
 
i = 5 < 4;//~보다 작다.(5는 4보다 작다) ->false(0)
i = 5 > 4;//~보다 크다.(5는 4보다 크다) ->true(1)
i = 5 == 4;//~는 같다. (5와 4는 같다)->false(0)
i = 5 != 4;//~는 같지 않다.(5와 4는 같지 않다)->true(1)
i = 5 <= 4;//~작거나 같다. (5는 4보다 작거나 같다)->false(0)
i = 5 >= 4;//~크거나 같다.(5는 4보다 크거나 같다)->true(1)
 
i =`345`==345;//숫자형문자열 == 숫자 -> true(1) ->숫자형 문자열은 자동변환 되어 비교하기때문에 true임
i = `15`>`12`;//문자열>문자열 ->true
i = `korea`>`america`;//true >abcdefhgijk번째vs a번째 여서 숫자로 자동변환되어 비교함
i = `apple`>`apale`;//true > 첫번째 글자의 자리수가 동일하면 두번째 (다음)자리수 비교함

i = 0 == false;//true (0과 false는 같다)
i = 0 != false;//false (0과 false는 같지않다)
i = 0 !== false;//true (0과 false는 완전히 같지않다)> 0의 데이터 타입과 false의 데이터 타입이 완전히 같지는 않기때문에 true
i = 40 > 25 > 10; //false > 40>25는 true이기 때문에 1이다. 그래서 1>10은 false이다.
 
 

3. 문자열(string)의 연산

let num;

//더하기 연산자
num = 11+22;//숫자 + 숫자 = 숫자(33)
num = '문자열은 인용부호(따옴표)와 함께 작성하는 데이터';//문자열 string
num = `재미있는` + `백틱`; //문자열 + 문자열
num = `재미있는` +`자바스크립트` +`백틱`;
num = `11 ` +22; //문자열+숫자 =문자열1122
num = 11 +`22`; // 숫자+문자열= 문자열1122

//빼기 연산자
num = 11-22; //숫자 - 숫자 =숫자 (-11)
num = `오늘은 `-`신나는 `-`수요일!`-`이예~`;//문자열-문자열-문자열-문자열=NaN(Not a Number) 문자열끼리 빼기 연산불가
num = `11`-22; //문자열 - 숫자 = 숫자형 문자열(-11)의 경우 자동으로 변환하여 연산
num = 11-"22";// 숫자 - 문자열 = 숫자(-11)

//곱하기 연산자
num = 11*22;// 숫자 *숫자 =숫자
num =`오늘은`*`신나는`/`수요일`**'이예~';//문자열*문자열/문자열**문자열=NaN(Not a Number)
num = "11"*22;///숫자형문자열- 숫자=숫자(연산가능)
num = 11**'2';//숫자=숫자형문자열 =숫자(연산가능)


//복합 연산자
num = 11+22+'의 합은?';//(숫자+숫자)->33숫자 + 문자열연산됨 ->33의 합은?
num = '다음 수의 합은?' + 11+22;//(문자+숫자)->문자열 +숫자 -> 문자열이 됨 (다음 수의 합은? 1122)
console.log(num);
 
산술연산자에서,
 
1. 더하기 연산자만 문자열 데이터를 연산할 수 있다.
`재미있는`+`자바스크립트!` ->가능
`오늘은 `- `신나는 ` % `금요일` -> 불가능

2. 더하기 연산자를 제외한 다른 연산자는 숫자형 문자열의 경우 *숫자*로 자동변환하여 연산한다.  "11"*22; ('11'은 숫자형 문자열로 문자그대로 연산되지 않고 11로 변환되어 연산한다. )

3. 복합 연산의 경우 문자열과의 더하기가 먼저 연산되면 문자열 데이터로 반환한다.