//1. String concatenation
console.log('my' + 'cat'); //mycat
console.log('1' + 2); //12
console.log(`string literals: 1+2 = ${1 + 2}`); //string literals: 1+2 = 3
//2. Numberic 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 2의 3승
//3. Increment and decrement operators
let counter = 2;
const preIncrement = ++counter; //앞쪽에 붙으면 먼저 더하고 할당 ㄱㄱ
console.log(`preIncrement: ${preIncrement}, counter: ${counter}`); //preIncrement: 3, counter: 3
const postIncrement = counter++; // 할당 후 더해줌.
//4. Assignment operators
let x = 3;
let y = 6;
x += y; // x = x + y;
x -= y; // x = x - y;
x *= y; // x = x * y;
x /= y; // x = x / y;
//5. Comparison operators
console.log(10 < 6); //less than
console.log(10 <= 6); //less than or equal
console.log(10 > 6); //greater than
console.log(10 >= 6); //greater than or equal
console.log(10 == 6); //equal 값만 비교함
console.log(10 != 6); //not equal
console.log(10 === 6); //equal 데이터 타입까지 비교함
console.log(10 !== 6); //not equal
//6. Logical operators: || (or), && (and), ! (not)
const value1 = false;
const value2 = 4 < 2; //false
// || (or), finds the first truthy value 처음으로 true가 나오면 거기서 멈춤.
console.log(`or: ${value1 || value2 || check()}`);
//이렇게 or. and 비교연산의 경우 heavy operation을 뒤에 배치해야함!!
// && (and), finds the first falsy value
console.log(`and: ${value1 && value2 && check()}`);
// often used to compress long if-statement
// nullableObject && nullableObject.something
// if (nullableObject != null) {
// nullableObject.something;
// }
function check() {
for (let i = 0; i < 10; i++) {
//wasting time
console.log('wasting time');
}
return true;
}
// ! (not)
console.log(!value1);
//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 서로 다르게 선언되어서 ref 자체가 다름
console.log(ellie1 === ellie2); //false ref자체가 다르므로 type과 상관없음
console.log(ellie1 === ellie3); //true
//equality - puzzler
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
//if, else if, else
const name = 'ellie';
if (name === 'ellie') {
console.log('Welcome, Ellie!');
} else if (name === 'coder') {
console.log('You are amazing coder');
}
else {
console.log('unknow');
}
//9. Ternary operator: ?
//condition ? value1 : value2 묶고 묶고 묶어서 사용하면 가독성 떨어지므로 if나 switch 로 작성할것.
console.log(name === 'ellie' ? 'yes' : 'no');
//10. Switch statement
//use for multiple if checks
//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':
case 'Firefox': //이렇게 묶어서 사용도 가능.
console.log('love you!');
break;
default:
console.log('same all!');
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--;
}
//do while loop, body code is executed first,
//then check the condition. 실행 후 체크
do {
console.log(`do while: ${i}`);
i--;
} while (i > 0);
for (i = 3; i > 0; i--) { //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 //O(n^2) cpu에 좋지 않음. 되도록 피할것.
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(`i: ${i}, j: ${j}`);
}
}
//break, continue
//0부터 10까지 continue이용해서 짝수만 출력
for (let i = 0; i <= 10; i++) {
if (i % 2 !== 0) {
continue;
}
console.log(`question1:${i}`);
}
//break 이용해서 0부터 10까지 출력하다가 8에서 멈출것
for (let i = 0; i <= 10; i++) {
if (i > 8) {
break;
}
console.log(`question2:${i}`);
}
https://youtu.be/YBjufjBaxHo