// 1. String concatenation
console.log('my'+ 'cat'); //문자열과 문자열을 합쳐서 새로운문자열
console.log('1'+2); //숫자와 문자열을 합쳐서 숫자계산
console.log(`string literals : 1+2 = ${1+2}`);
//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; //전위연산자
//counter = counter + 1;
//preIncrement = counter;
console.log(`preIncrement : ${preIncrement}, counter : ${counter}`);
const postIncrement = counter++;
// postIncrement = counter;
//counter = counter +1;
console.log(`postIncrement : ${postIncrement}, counter : ${counter}`);
//4. Assignment operators 할당하는 operator
let x = 3;
let y = 6;
x += y; //x = x+y;
x -= y;
x *= y;
x /= y;
//5. Comparison operator (비교연산자)
console.log(10 < 6); //less than
console.log(10 <= 6);
console.log(10 > 6);
console.log(10 >= 6);
//6. Logical operators : || (or), &&(and), !(not)
const value1 = false;
const value2 = 4 < 2; //false
//||(or) , or 연산자는 하나라도 트루면 멈춘다
console.log(`or: ${value1||value2||check()}`); //이런 연산이 필요한 무거운 함수는 뒤쪽에 놓아야 좋다.
// &&(and), 하나라도 false면 멈춤
console.log(`and: ${value1&&value2&&check()}`);
function check(){
for(let i = 0 ; i <10 ; i++){
//wasting time
console.log('OMG');
}
return true;
}
//7. Equality
const stringFive = '5';
const numberFive = 5;
// == loose equality, with type conversion
console.log(stringFive == numberFive);
console.log(stringFive != numberFive);
// === strict equality, no type conversion
console.log(stringFive === numberFive);
console.log(stringFive !== numberFive); //왠만하면 stric equality를 사용하자!
//오브젝트의 equality by reference
const ellie1 = {name: 'ellie'};
const ellie2 = {name: 'ellie'};
const ellie3 = ellie1;
console.log(ellie1 == ellie2); //false
console.log(ellie1 === ellie2); // false
console.log(ellie1 === ellie3); //true
//8. Conditional operator : 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');
//10. Switch statement
//use for multiple if checks
// use for enum-like value check
//use for multiple type check in TS
const borwser = 'IE';
switch(borwser){
case 'IE':
console.log('go away!!');
break;
case 'chrome':
console.log('love you!');
break
case 'Firefox':
console.log('love you!'); //이렇게 똑같은 결과물을 출력할때는 case를 붙여서 쓸수 있다.
break;
default:
console.log('same sll');
break;
}
// 11.Loops
// while loop, while the condition is truthy
// body cod is excuted
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 loop, for(begin ; condition; step)
for(i = 3; i > 0; i--){
console.log(`for: ${i}`);
}
for(let i = 3; i > 0; i--){
//inline variable declaration
console.log(`inline variable for: ${i}`);
}
//break (loop 완전 종료), continue (이번스탭은 스킵하고 다음스탭으로 넘어가는것) //
for(let j = 0 ; j<11 ; j++){
if(j%2===1){
continue;
}
console.log(j);
}
for(let j = 0 ; j<11 ; j++){
if(j===8){
break;
}
console.log(j);
}