1. String concatenation
console.log('my' + 'cat'); // my cat
console.log('1' + 2); // 12
console.log(`string literals: 1 + 2 = ${1 + 2}`); // string literals: 1 + 2 = 3
2. Numeric operators
+, -, /, *, %, **
3. Increment and decrement operators
let counter = 2;
const preIncrement = ++counter;
// counter = counter + 1;
// preIncrement = counter;
const postIncrement = counter++;
// postIncrement = counter;
// counter = counter + 1;
4. Assignment operators
+=, -=, *=, /=
5. Comparison operators
<, <=, >, >=
6. Logical operators
- || (or)
- 처음으로 true가 나오면 뒤의 값과 상관없이 바로 stop
- simple한 연산을 제일 앞에 두고, 연산을 많이 하는 함수 호출이나 expression은 제일 뒤에 배치
- && (and)
- 처음으로 false가 나오면 뒤의 값과 상관없이 바로 stop
- heavy한 연산일수록 가장 뒤에서 check하는 것이 좋다
- null check 등에서도 많이 사용한다
- ! (not)
- 값을 반대로 바꿔준다
- ex) 결과가 true면 false로 바꿔서 출력
7. Equality
const stringFive = '5';
const numberFive = 5;
// == loose equality, with type conversion
// type 변경해서 검사한다
console.log(stringFive == numberFive); // true
console.log(stringFive != numberFive); // false
// === strict equality, no type conversion
// type을 신경써서, type이 다르면 false
console.log(stringFive == numberFive); // false
console.log(stringFive != numberFive); // true
// object equality by reference
const ellie1 = { name: 'ellie' };
const ellie2 = { name: 'ellie' };
const ellie3 = ellie1;
console.log(ellie1 == ellie2); // false
// ellie1과 ellie2는 같은 data가 들어있는 object지만,
// 실제 메모리에는 1과 2에 각각 다른 reference가 들어있고, 서로 다른 object를 가리키고 있다.
console.log(ellie1 === ellie2); // false
console.log(ellie1 === ellie3); // true
console.log(0 == false); // true
console.log(0 === false); // false
console.log('' == false); // true
console.log('' === false); // false
console.log(null == undefined); // true
console.log(null === undefined); // false
8. Conditional operators
if, else if, else
9. Ternary operator: ?
condition ? value1 : value2;
참고
youtube 드림코딩 by 엘리
https://www.youtube.com/watch?v=YBjufjBaxHo&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=4
'language > javascript' 카테고리의 다른 글
Object (0) | 2021.11.25 |
---|---|
클래스와 오브젝트의 차이점 (0) | 2021.11.25 |
Function (0) | 2021.11.25 |
data types, let vs var, hoisting (0) | 2021.11.25 |
async와 defer (0) | 2021.11.25 |