[operator]
1. String concatenation
console.log('my' + ' cat'); //my cat
console.log(`string literals: 1 + 2 = ${1+2}`); //string literals: 1 + 2 = 3
* '' 랑 `` 헷갈리지 말기 (backtick기호.)
2. Numeric operators
console.log(1 + 1); // add
console.log(1 - 1); // substract
console.log(1 / 1); // divide
console.log(1 * 1); // multiply
console.log(5 % 2); // remainder
console.log(2 ** 3); // exponentiation
3. Increment and decrement operators
let counter = 2;
const preIncrement = ++counter;
console.log(`preIncrement : ${preIncrement}, counter: ${counter}`);
//preIncrement : 3, counter: 3
const postIncrement = counter++;
console.log(`postIncrement : ${postIncrement}, counter: ${counter}`);
//postIncrement : 3, counter: 4
decrement도 같은 원리
4. Assignment oprators
let x = 3;
let y = 6;
x += y; //x = x + y;
x -= y;
x *= y;
x /= y;
5. Comparison oprators
console.log(10 < 6); //f
console.log(10 <= 6); //f
console.log(10 > 6); //t
console.log(10 >= 6); //t
6. Logical operators : || (or), && (and), ! (not)
const value1 = true;
const value2 = 4 < 2;
// || (or)
//finds the first truthy value 하나라도 true 나오면 거기서 멈춤. 뒷부분 코드 아예 안읽는다.
//=> 무거운 함수일수록 뒤로 보내는게 훨씬 효율적! (check함수가 가장 뒤로오는게 효율적)
console.log(`or: ${value1 || value2 || check()}`);
// && (and)
//finds the first falsy value 하나라도 false가 나오면 거기서 멈춤.
console.log(`and: ${value1 && value2 && check()}`);
//null check할때도 많이 쓴다. // nullableObject && nullableObject.something
if (nullableObject != null) {
nullableObject.something;
}
function check() {
for(let i = 0; i < 10; i++) {
console.log('haha');
}
return true;
};
// ! (not)
console.log(!value1);
7. Equality
//7. Equality
const stringFive = '5';
const numberFive = 5;
//loose equality, with type conversion
console.log(stringFive == numberFive); //true
console.log(stringFive != numberFive); //false
//strict equality, no type conversion
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 object는 참조를 가지는데 참조가 다르므로 false
console.log(ellie1 === ellie2); //false
console.log(ellie1 === ellie3); //true ellie1과 ellie3는 같은 참조(reference)를 가진다.
* equality - puzzler
console.log(0 == false); //t
console.log(0 === false); //f
console.log('' == false); //t
console.log('' === false); //f
console.log(null == undefined); //t
console.log(null === undefined); //f
8. Conditional operators: if
//if, else if, else
const name = 'coder';
if (name === 'ellie') {
console.log('Welcome, Ellie!');
} else if (name === 'coder') {
console.log('You are amazing coder');
} else {
console.log('unknown');
}
9. Ternary operator: ?
//condition ? value1 : value2;
console.log(name === 'ellie' ? 'yes' : 'no');
//간단한 경우에는 이렇게 쓰지만 여러가지 쓸 경우엔 if else나 switch를 쓰는게 가독성에 좋음
10. Switch statement
//use for multiple if chesckx
//use for enum-like value check
//use for multiple type checks in TS
const browser = 'IE';
switch (browser) {
case 'IE':
console.log('go away!');
break;
case 'Chrome':
console.log('love you');
break;
case 'Firefox':
console.log('love you');
break;
default:
console.log('same all!');
break;
}
*switch문에서 중복된 것을 출력하는 case가 있다면 같이 쓰는것도 가능.
case 'Chrome':
case 'Firefox':
console.log('love you!');
break;
11. Loops 반복문
*while loop
//while the condition is truthy, body code is executed.
let i =3;
while (i > 0) {
console.log(`while: ${i}`);
i--;
}
//while: 3
//while: 2
//while: 1
*do while loop
//body code is executed first, the check the condition. 일단 실행하고 조건본다.
do {
console.log(`do while: ${i}`);
i--;
} while (i > 0);
// do while: 0 만 출력. 이미 i가 위에서 0.
*for loop
//for(begin; condition; step)
for (i = 3; i > 0; i--) {
console.log(`for: ${i}`);
}
for (let i = 3; i > 0; i = i- 2) {
//inline variable declaration
console.log(`inline variable for: ${i}`);
}
//nested loops
for ( let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(`i: ${i}, j: ${j}`);
}
}
//이런식으로 nested해서 쓸 수 있지만 cpu에 좋지는 않음.
* break, continue quiz
//Q1. iterate from 0 to 10 and print only even numbers(use continue)
for(let i = 0; i < 11; i++) {
if(i % 2 !== 0) {
continue;
}
console.log(`q1. ${i}`);
}
//Q2. iterate from 0 to 10 and print numbers until reaching 8
for(let i = 0; i < 11; i++) {
if(i > 8) {
break;
}
console.log(`q2. ${i}`);
}
* lable도 있지만 현업에서는 쓰지않음.
'공부 > JavaScript' 카테고리의 다른 글
class vs object, class정리 (dreamcoding) | ES6 (0) | 2021.01.27 |
---|---|
Arrow Function (dreamcoding)| ES6 (0) | 2021.01.26 |
async, defer / data types ~ (dreamcoding) | ES5+ (0) | 2020.12.09 |
중복 제거하고 정렬하기(Set, sort) (0) | 2020.10.25 |
0626 자바스크립트 (0) | 2020.06.29 |