어플리케이션을 실행하면 입력 -> 처리 -> 출력이 일어난다. 이때 처리 부분에서 연산자가 나온다.
연산자(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산등을 수행해 하나의 값을 만든다.
값을 변수에 할당
할때 원시타입
과 객체타입
이 있다.
코드에서 값을 나타내는 표기법을 리터럴
이라 부른다.
123 ->숫자리터털
'123' ->문자리터럴
true -> 불리언리터럴
{} -> 객체리터럴
[] -> 배열리터럴
템플릿리터럴
function(){} -> 함수리터럴
코드에서 최소로 실행할수 있는 단위를 문이라고 한다.
선언문, 할당문, 조건문, 반복문, 표현식(값으로 평가 될수 있는 문)
산술연산자 | |
---|---|
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
% | 나머지 |
+ 연산자 주의점!!
let text = '우리'+ '나라';
console,log(text); //우리나라
let num = '1' + 1 ; //숫자와 문자열을 더하면 문자열로 반환된다.
console.log(num); // 11
단항 산술 연산자 | |
---|---|
++ | 증가 |
-- | 감소 |
+ | 어떠한 효과도 없다. 음수를 양수로 반전하지도 않는다 |
- | 양수를 음수로, 음수를 양수로 반전한 값을 반환한다 |
! | 부정(true, false값을 반환) |
증감연산자 예시
a++; //a = a + 1;
a--; //a = a - 1;
주의사항!!!
a++ //필요한 연산을 하고, 그 뒤 값을 증가시킨다
++a //값을 먼저 증가시키고, 필요한 연산을 한다
+ - 예시
let a = 5;
a = -a; //-1*5
console.log(a); //-5
a = -a;
console.log(a); //5 (-를 한번 더 곱하면 양수가 된다)
a = +a;
console.log(a); //+에 +를 곱하면 5
a = -a;
a = +a;
console.log(a); //5
a = -a; //-5
a = +a; //+(-5)
console.log(a); //-5
할당 연산자 | |||
---|---|---|---|
= | x = 10 | x = 10 | 10 |
+= | x += 5 | x = x + 5 | 15 |
-= | x -= 5 | x = x - 5 | 10 |
*= | x *= 5 | x = x * 5 | 50 |
/= | x /= 5 | x = x / 5 | 10 |
%= | x %= 5 | x = x % 5 | 0 |
대소관계 비교연산자
>, <, >=, <=
동등 비교 관계 비교연산자
== 값이 같음
!= 값이 다름
=== 값과 타입이 둘다 같음
!== 값과 타입이 다름
console.log(2 == 2); //true
console.log(2 != 2); //false
console.log(2 != 3); //true
console.log(2 == 3); // false
console.log(2 == '2'); //true
console.log(2 === '2'); //false
console.log(true == 1); //true
console.log(true === 1); //false
console.log(false == 0); //true
console.log(false === 0); //false
const objectOne = {
name = 'js'
};
const objectTwo = {
name = 'js'
};
console.log(objectOne == objectTwo); //false
console.log(objectOne === objectTwo); //false
console.log(objectOne.name == objectTwo.name); //true
console.log(objectOne.name === objectTwo.name); //true
왜 false인가? 메모리 공간에 각 다른 메모리주소를 갖고 있음으로 false가 나온다.
다른 예시~~!!
동일한 주소를 같고 있으므로 true가 나온다
let objectThree = objectTwo;
console.log(objectThree == objectTwo); //true
console.log(objectThree === objectTwo); //true
논리 연산자 | |
---|---|
|| | 합(OR) |
&& | 곱(AND) |
! | 부정(NOT)(true, false값을 반환) |
논리합연산자(||) 예시
true || true; // true
true || false; //true
false || false; //false
논리곱연산자(&&) 예시
true && true; // true
true && false; //false
false || false; //false
부정연산자 예시
let boolean = true;
console.log(boolean); //true
console.log(!boolean); //false
console.log(!!boolean); //true
! 부정연산자
!! 값을 boolean 타입으로 변환한다
숫자가 아닌 타입한테 +를 붙여 숫자로 변환하면 어떤값이 나오는지 알수있다.
console.log(+false); //0
console.log(+null); //0
console.log(+''); //0
console.log(+true); //1
console.log(+'text'); //NaN
console.log(+undefined); //NaN
조건식의 평가 결과에 따라 반환할 값을 결정한다.
조건식 ? 조건식이 true일때 반환할 값 : 조건식이 false일때 반환할 값
var age = 26;
var beverage = (age >= 21) ? "Beer" : "Juice";
console.log(beverage); // "Beer"
typeof 연산자는 7가지 문자열을 반환한다.
typeof '' // "string"
typeof 1 // "number"
typeof NaN // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof Symbol() // "symbol"
typeof null // "object" !!버그 null타입인지 확인 할때는 일치연산자(===)를 사용하자
typeof [] // "object"
typeof {} // "object"
typeof new Date() // "object"
typeof /test/gi // "object"
typeof function () {} // "function"
헷갈린다면 ()로 묶어서 우선순위를 명시해주는게 좋다!!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Operator_Precedence